【发布时间】:2018-08-16 05:35:08
【问题描述】:
我有许多 HTML 文件需要打开或导入到单个 Excel 工作簿中,然后简单地保存工作簿。每个 HTML 文件都应位于 Workbook 内自己的 Worksheet 上。
我现有的代码不起作用,它在workbook.Open(html) 行崩溃,并且可能会在以下行崩溃。我无法在网络上搜索特定于该主题的任何内容。
import win32com.client as win32
import pathlib as path
def save_html_files_to_worksheets(read_directory):
read_path = path.Path(read_directory)
save_path = read_path.joinpath('Single_Workbook_Containing_HTML_Files.xlsx')
excel_app = win32.gencache.EnsureDispatch('Excel.Application')
workbook = excel_app.Workbooks.Add() # create a new excel workbook
indx = 1 # used to add new worksheets dependent on number of html files
for html in read_path.glob('*.html'): # loop through directory getting html files
workbook.Open(html) # open the html in the newly created workbook - this doesn't work though
worksheet = workbook.Worksheets(indx) # each iteration in loop add new worksheet
worksheet.Name = 'Test' + str(indx) # name added worksheets
indx += 1
workbook.SaveAs(str(save_path), 51) # win32com requires string like path, 51 is xlsx extension
excel_app.Application.Quit()
save_html_files_to_worksheets(r'C:\Users\<UserName>\Desktop\HTML_FOLDER')
如果有帮助,以下代码可以满足我的一半需求。它将每个 HTML 文件转换为单独的 Excel 文件。我需要一个带有多个工作表的 Excel 文件中的每个 HTML 文件。
import win32com.client as win32
import pathlib as path
def save_as_xlsx(read_directory):
read_path = path.Path(read_directory)
excel_app = win32.gencache.EnsureDispatch('Excel.Application')
for html in read_path.glob('*.html'):
save_path = read_path.joinpath(html.stem + '.xlsx')
wb = excel_app.Workbooks.Open(html)
wb.SaveAs(str(save_path), 51)
excel_app.Application.Quit()
save_as_xlsx(r'C:\Users\<UserName>\Desktop\HTML_FOLDER')
这里是一个可以使用的示例 HTML 文件的链接,文件中的数据不是真实的:HTML Download Link
【问题讨论】:
-
HTML应该如何插入?作为一个原始字符串进入其中一个单元格?作为Web 浏览器的ActiveX 控件的内容?还有什么?
-
感谢您的回复。应该插入 HTML 文件,就像您启动 Excel 并在应用程序中打开 HTML 文件一样。每个 HTML 文件本质上都是一个表格,它们具有简单的格式,例如我需要保留的列宽和字体颜色。
-
如何打开它?尝试在 Excel 2016 中打开 HTML 文件会导致错误提示该文件可能已损坏。
-
我在原始帖子的最底部添加了一个链接,您可以在其中下载示例 HTML 文件。下载后,启动 Excel 应用程序并转到文件并打开,然后浏览下载的 HTML 文件。
-
太棒了,谢谢,这个工作。
标签: python html excel python-3.x win32com