遇到的几个坑:
1、要打开已存在的工作簿,向里面添加东西。一开始用xlsxwriter,最后发现走了弯路,有博客说xlsxwriter根本不支持“打开已存在的工作簿”,还是选用openpyxl好。
2、往单元格写公式,最后忘记保存了,浪费了时间。代码如下:
wb = load_workbook(sExcelFile)#sExcelFile是excel文件名 ws = wb.active excel_formula = "=SUM(A2:C2)" ws.cell(row=5, column=4, value=excel_formula) wb.save(sExcelFile) wb.close()
3、输出单元格中公式的值。
注意:
1) 要先打开,保存,关闭,再用 workbook = load_workbook(sExcelFile, data_only=True) ,注意参数是data_only=True。如果直接打开,就是用了True,有可能还是输出公式
2)just_open这个函数要用excel文件的绝对路径!如果不用just_open函数,明明有值,最好输出也是None
3)安装win32com 包的方法: pip install pypiwin32
用以下的代码:
from win32com.client import Dispatch
def just_open(filename):
xlApp = Dispatch("Excel.Application")
xlApp.Visible = False
xlBook = xlApp.Workbooks.Open(filename)
xlBook.Save()
xlBook.Close()
def read(sExcelFile):
just_open("D:\myProgram\pythonProgram\JetbrainsCrack\excelToMssql\mssqlToExcelBom\往单元格写公式.xlsx")#注意:just_open这个函数要用excel文件的绝对路径!
workbook = load_workbook(sExcelFile, data_only=True)
writed_sheet = workbook['Sheet1']
str = writed_sheet.cell(2, 4).value
# wb = load_workbook(sExcelFile,data_only=True)
# ws = wb.active
# cell_value = ws.cell(row=3, column=4).value
print(str) #这样应该可以输出公式的值了
4、单元格的值,如果是"#N/A",就着色
from openpyxl.styles import PatternFill
workbook = load_workbook(sExcelFile, data_only=True)
ws= workbook['Sheet1']
if (str == "#N/A"):
fill = PatternFill("solid", fgColor="1874CD")
ws.cell(5, 6).fill = fill
基本上大功告成。最后py转exe
pip install pyinstaller
pyinstaller -F 自己的py文件.py #参数自选



