Рубрики
Без рубрики

WXPYPHON: объявлен новый виджет: xlsgrid

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Недавно Андреа Гавана, разработчик библиотеки AGW в базе кодовой базы WXPYPHON, выпустил свой новейший виджет: XLSGRID. Это цель – это Предполагается добросовестно воспроизвести внешний вид электронной таблицы Microsoft Excel (один лист на каждый экземпляр XLSGRID) Отказ Этот виджет основан на wx.grid.pygridtablebase и wx.grid.pygridcellrenderer и требует XLRD Отказ Андреа также рекомендует использовать Mark Hammond’s Pywin32 Модуль или способности форматирования виджета будут очень ограничены. Если вы хотите прочитать полное объявление, просто пойти здесь Отказ

Если вы вознаградите загрузку из группы WXPYPHON, вы получите три файла:

  • Example_1.xls.
  • xlsgrid.py
  • XLSGridDemo.py

Первый пример файла Microsoft Excel, второй – сам файл виджета, а третий – это удобное демонстрация. Если вы запускаете демо и обратите внимание на следующую ошибку в вашем окне «Команда», необходимо загрузить последние вещества AGW из репозитория WXPYPHON SVN:

Traceback (most recent call last):
  File "C:\Users\Mike\Desktop\xls\xlsgrid.py", line 1657, in OnMouseMotion
    self.tip_window = TransientPopup(window, comment, wx.GetMousePosition())
  File "C:\Users\Mike\Desktop\xls\xlsgrid.py", line 1853, in __init__
    self.DoShowNow()
AttributeError: 'TransientPopup' object has no attribute 'DoShowNow'

Теперь мы найду минутку и создаем простой файл Excel и нашу собственную маленькую демонстрацию. Давайте получим кодирование!

Примечание. Вы можете скачать файл Excel в конце этого поста.

import wx
import xlrd
import xlsgrid as XG

########################################################################
class MyForm(wx.Frame):
 
    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial")
        
        panel = wx.Panel(self, wx.ID_ANY)
        
        filename = "demo.xls"
        book = xlrd.open_workbook(filename, formatting_info=1)
        sheetname = "Sheet1"
        sheet = book.sheet_by_name(sheetname)
        rows, cols = sheet.nrows, sheet.ncols
        comments, texts = XG.ReadExcelCOM(filename, sheetname, rows, cols)
        
        xlsGrid = XG.XLSGrid(panel)
        xlsGrid.PopulateGrid(book, sheet, texts, comments)
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(xlsGrid, 1, wx.EXPAND, 5)
        panel.SetSizer(sizer)
        
#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm().Show()
    app.MainLoop()

Если вы запустите код выше, вы должны увидеть что-то вроде этого:

Единственная проблема, которую я имел, когда я побежал, это то, что если файл Excel не имел никаких комментариев, я бы получил следующий трассировку:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'No cells were found.', 'C:\\Program Files\\Microsoft Office\\Office10\\1033\\xlmain10.chm', 0, -2146827284), None)
File "E:\My Documents\My Dropbox\Scripts\wx tutorials\XLSGrid-tut\mvp_xlsDemo.py", line 32, in 
  frame = MyForm().Show()
File "E:\My Documents\My Dropbox\Scripts\wx tutorials\XLSGrid-tut\mvp_xlsDemo.py", line 19, in __init__
  comments, texts = XG.ReadExcelCOM(filename, sheetname, rows, cols)
File "E:\My Documents\My Dropbox\Scripts\wx tutorials\XLSGrid-tut\xlsgrid.py", line 475, in ReadExcelCOM
  comm_range = workbook.GetCommentsRange()
File "E:\My Documents\My Dropbox\Scripts\wx tutorials\XLSGrid-tut\xlsgrid.py", line 535, in GetCommentsRange
  return self.sheet.Cells.SpecialCells(-4144)
File "L:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 3, in SpecialCells
  

Таким образом, этот виджет в настоящее время требуется, по крайней мере, один комментарий к работе версии 0.2. Кроме того, он отлично работает. Если вам необходимо прочитать и отобразить файлы Microsoft Excel в своем коде (или вы просто хотите узнать некоторые аккуратные трюки WX.GRID), вы должны пойти загрузить этот крутой новый виджет!

Загрузки

  • mvp_xlsDemo.zip
  • mvp_xlsdemo.tar.