是否可以在 Python 中将以下奇怪的 .XLS 文件(实际上是某种 HTML/XML 格式)转换为 .XLSX?

Posted

技术标签:

【中文标题】是否可以在 Python 中将以下奇怪的 .XLS 文件(实际上是某种 HTML/XML 格式)转换为 .XLSX?【英文标题】:Is it possible in Python to convert the below strange .XLS file, which is actually in some HTML/XML format to .XLSX? 【发布时间】:2021-01-20 17:25:29 【问题描述】:

对这些 .xls 文件的格式感到非常困惑,因为它们并不是真正的 .xls 文件,我将文件的前几行放在下面以供参考,full file here。

p.save_book_as(file_name=fname, dest_file_name=fname+'x')转换普通的.xls是没有问题的。

我想用python批量转换成.xlsx,下面的格式可以吗?

MIME-Version: 1.0
X-Document-Type: Workbook
Content-Type: multipart/related; boundary="----=_NextPart_86ab7b61_9054_45ca_a3a6_49bc8ebc61db"

This document is a Single File Web Page, also known as a Web Archive file.  If you are seeing this message, your browser or editor doesn't support Web Archive files.  Please download a browser that supports Web Archive, such as Microsoft Internet Explorer.

------=_NextPart_86ab7b61_9054_45ca_a3a6_49bc8ebc61db
Content-Location: file:///C:/86ab7b61_9054_45ca_a3a6_49bc8ebc61db/Workbook.html
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-microsoft-com:office:office" xmlns:x=3D"urn:schemas-microsoft-com:office:excel" xmlns=3D"http://www.w3.org/TR/REC-html40">
<head>
<meta name=3D"Excel Workbook Frameset">

<meta name=3DProgId content=3DExcel.Sheet>
<link rel=3DFile-List href=3D"Worksheets/filelist.xml">

<!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
  <x:ExcelWorksheets>
   <x:ExcelWorksheet>

【问题讨论】:

你是怎么得到这个文件的? 上面有问题的完整文件链接,这是美国证券交易委员会网站上提供的亚马逊财务报表。出于某种原因,SEC 从使用普通 XLS 格式几年,然后使用这种 HTML/XLS 格式几年,然后在其所有财务报表中使用 XLSX。 【参考方案1】:

这似乎是“Excel compatible HTML”。 虽然我不知道纯 python 转换器,但您可以尝试使用 excel 作为外部转换器,即打开这些文件并将它们保存到 xlsx,如described here 并在下面复制。这需要pywin32包,才能远程访问excel。

import win32com.client as win32
fname = "full+path+to+xls_file"
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)

wb.SaveAs(fname+"x", FileFormat = 51)    #FileFormat = 51 is for .xlsx extension
wb.Close()                               #FileFormat = 56 is for .xls extension
excel.Application.Quit()

【讨论】:

以上是关于是否可以在 Python 中将以下奇怪的 .XLS 文件(实际上是某种 HTML/XML 格式)转换为 .XLSX?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将 JSON 转换为 XLS/CSV [关闭]

用Python批量把.xls转换.xlsx出现一个奇怪的错误,帮忙看一下吧。谢谢

如何在 C# 中将文件导出到 excel 2007+

在apache NIFI中将xls文件转换为csv文件

在java servlet中将.xls文件导入mysql

如何在sql server中将这些奇怪的字符解码为可读的波斯语?