Автор оригинала: 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, inframe = 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.