如何在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