如何在Excel中将Excel表格保存为HTML?
我正在使用这个库XlsxWriter 。
我已经打开了一本工作簿,并写了一些东西( 考虑官方的例子 ) –
import xlsxwriter # Create a workbook and add a worksheet. workbook = xlsxwriter.Workbook('Expenses01.xlsx') worksheet = workbook.add_worksheet() # Some data we want to write to the worksheet. expenses = ( ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ) # Start from the first cell. Rows and columns are zero indexed. row = 0 col = 0 # Iterate over the data and write it out row by row. for item, cost in (expenses): worksheet.write(row, col, item) worksheet.write(row, col + 1, cost) row += 1 # Write a total using a formula. worksheet.write(row, 0, 'Total') worksheet.write(row, 1, '=SUM(B1:B4)') workbook.close()
我严格阅读了文档,但似乎无法find保存function。
有没有办法(以任何方式 )将workbook
保存为HTML文件?
如果从Python代码是不可能的,我可以以某种方式编写VBA代码并从python调用该代码?
您可以使用win32com.client
来调用VBAmacros。 假设你的文件被命名为Bar …
VBA:
Sub SaveHTML() ThisWorkbook.SaveAs Filename:="C:\Foo\Bar.htm", FileFormat:=xlHtml End Sub
python:
from win32com.client import Dispatch xl = Dispatch('Excel.Application') xl.Workbooks.Open('C:\Foo\Bar.xlsx') #xl.Visible = True -- optional xl.Application.Run("SaveHTML") xl.Workbooks.Close
根据需要修改。
编辑:我忘了添加,使用win32comclosuresExcel是一个绝对痛苦。 工作簿将closures,但应用程序本身将继续(检查任务pipe理器)。 请参考此SOpost的解决方法。
也许你可以在转换为html之前使用xlrd来parsing你的excel文件http://codingtutorials.co.uk/python-excel-xlrd-xlwt/
您可以直接从Python保存到HTML,然后附加到电子邮件:
from win32com.client.gencache import EnsureDispatch from win32com.client import constants yourExcelFile = ... newFileName = ... xl = EnsureDispatch('Excel.Application') wb = xl.Workbooks.Open(yourExcelFile) wb.SaveAs(newFileName, constants.xlHtml) xl.Workbooks.Close() xl.Quit() del xl