如何在Excel中将Excel Sheet保存为HTML?

时间:2013-10-28 09:46:36

标签: python html excel vba excel-vba

我正在使用此库XlsxWriter

我已经打开了一个工作簿,并在其中写了一些内容(considering the official example) -

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()

我严格审阅了文档,但似乎无法找到另存为功能。

有没有办法(以任何方式)将workbook保存为 HTML 文件?

如果从python代码中无法实现,我可以以某种方式编写 VBA 代码并从python中调用该代码吗?

3 个答案:

答案 0 :(得分:4)

您可以使用win32com.client来调用VBA宏。假设您的文件名为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

根据需要进行修改。

编辑:我忘了添加,使用win32com关闭Excel是一个绝对的痛苦。工作簿将关闭,但应用程序本身将停留(检查任务管理器)。有关此问题的解决方法,请参阅this SO post

答案 1 :(得分:2)

也许您可以在转换为html http://codingtutorials.co.uk/python-excel-xlrd-xlwt/之前使用xlrd来解析您的Excel文件

答案 2 :(得分:1)

您可以直接从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