【问题标题】:How do I save Excel Sheet as HTML in Python?如何在 Python 中将 Excel 工作表另存为 HTML?
【发布时间】:2013-11-07 00:45:14
【问题描述】:

我正在使用这个库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 调用该代码吗?

【问题讨论】:

  • 如果你想生成 HTML 那你为什么要在 excel 中写你的表格数据呢?为什么不直接使用您的表格数据生成 HTML?
  • @VIKASHJAISWAL 因为我已经有 6 个月的时间来为我的项目生成 Excel 表格。从头开始可能需要不必要的努力。

标签: python html vba excel


【解决方案1】:

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

【讨论】:

  • 链接已失效。
【解决方案2】:

您可以使用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 了解解决方法。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这部分工作,我生成了 html,但问题是:#1。电子邮件无法显示。 #2。我怎样才能只保存一张工作表,第一张,而不是所有工作簿工作表到 html。
    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多