操作 Excel 通常是用如下三个扩展体:
- import xlrd
- import xlwt
- import openpyxl
xlrd(读) 和 xlwt(写) 是一对. openpyxl 独立, 即可读也可写.
正常读都没有问题, 只是读有公式的 cell 时, 会出现如题症状. 对此, xlrd 似乎没答案, 而 openpyxl 开出的方子如下:
wb1 = openpyxl.load_workbook(xlsxFileWithFullPath, data_only=True)
就是加上 "data_only=True" 这个参数.
xlsxFileWithFullPath --- 要操作的文件.
加上以后你会发现, 还是依然如故, 或者是时可时否!
如把文件打开, 再保存一遍, 执行程序, 第一遍可以, 第二遍就不行了!
其实, 关于 data_only=True 这个参数有个重要说明:
# data_only (bool) - controls whether cells with formula have either the formula (default) or the value stored the last time Excel read the sheet
这就解释了上述时可时否的问题.
这样解决问题的办法就有了: 用程序来完成那个保存文件的任务即可!
- (1)...
- def ReadLine(self, tip1, tip2, movingRC, fixedRC, RorC, totalCells, sheetName, xlsxFileWithFullPath):
- [!!]just open and save the file once! why? see bellow!
- xlsxDealer.`JustOpenAndSaveTheFile`(xlsxFileWithFullPath)
- (2)...
- def JustOpenAndSaveTheFile(self, file_name):
- from win32com.client import Dispatch
- xlApp = Dispatch("Excel.Application")
- xlApp.Visible = False
- xlBook = xlApp.Workbooks.Open(file_name)
- xlBook.Save()
- xlBook.Close()
问题是解决了, 速度就是有点慢!
来源: http://www.bubuko.com/infodetail-3424337.html