ASP.NET 生成的 excel 文件的格式与扩展名不同
ASP.NET generated excel file has different format than extension
我有一个用旧 asp.net 2.0 制作的 Web 应用程序。我需要生成具有特定格式 table 的 excel 文件(最好的方法是我可以加载模板并且只将数据放在代码后面)。为此,我尝试使用这个库 CarlosAg.ExcelXmlWriter:
http://www.carlosag.net/tools/excelxmlwriter/sample
最终文件生成得很好,但是当我尝试在 MS 中打开它时 Excel 出现警告弹出窗口,其中包含 文件格式与扩展名不同的信息 (xls)。如果我信任文件来源,还会询问是否要打开它。当我单击是时,文件正确打开。在另一台Excel不同版本的电脑上,也有警告,但不同的是——文件已损坏,无法打开,移动端也一样(无法打开)。有趣的是 - 我可以在不同的办公程序中正确打开该文件而没有任何警告,例如。 WPS办公室。
所以我后退两步,尝试打开由 Carlos 库示例生成的简单文件,效果是一样的。有没有机会在代码后面“修复”文件,以便 MS Excel 也可以在没有任何警告的情况下正确打开它?
Dim book As Workbook = New Workbook()
Dim sheet As Worksheet = book.Worksheets.Add("Sample")
Dim row As WorksheetRow = sheet.Table.Rows.Add()
row.Cells.Add("Hello World")
book.Save("D:\Folder\test.xls")
您必须提供文件扩展名 xlsx。
旧的 xls 实际上是 office 文件的传统(封闭)二进制格式。
但是,自 office 2007 以来,Microsoft 对所有 office 文档采用了开放 xml 格式(好吧,outlook pst 和 MS-Access 是例外)。事实上,如果您使用任何办公文档(word、power-point、excel)等,请尝试将 xlsx 文档重命名为 zip 文件。您发现现在可以打开 zip 存档,并且可以 see/look 甚至修改该文档中的 xml。
(尝试将此重命名为 zip 文件以获得乐趣和咯咯笑声 - 你会发现实际上什至不需要任何第 3 方工具来打开、播放和弄乱 zip 存档中的内容(所以, 所有办公文件实际上都是一个简单的 zip 存档!!!)。
所以,较新的 office 文件格式实际上是 xml 标记 - 您可以对其进行修改!!
无论如何,毫无疑问,您正在使用的库因此使用了上述 feature/fact 的办公文档,现在正在 xml 格式化,而不是专有的 Microsoft 二进制格式 - 实际上您可以修改此类文档现在在任何能够打开 zip 文件和修改文本文件的计算机上。
因此,您给文档名称指定了一个旧的二进制文件名 (xls),但打开的是 xml 格式的文件(纯文本),因此 Excel 正在检测此 fact/issue。因此,您需要为该文档提供 open office xml 格式扩展名 (xlsx)。
我有一个用旧 asp.net 2.0 制作的 Web 应用程序。我需要生成具有特定格式 table 的 excel 文件(最好的方法是我可以加载模板并且只将数据放在代码后面)。为此,我尝试使用这个库 CarlosAg.ExcelXmlWriter: http://www.carlosag.net/tools/excelxmlwriter/sample
最终文件生成得很好,但是当我尝试在 MS 中打开它时 Excel 出现警告弹出窗口,其中包含 文件格式与扩展名不同的信息 (xls)。如果我信任文件来源,还会询问是否要打开它。当我单击是时,文件正确打开。在另一台Excel不同版本的电脑上,也有警告,但不同的是——文件已损坏,无法打开,移动端也一样(无法打开)。有趣的是 - 我可以在不同的办公程序中正确打开该文件而没有任何警告,例如。 WPS办公室。 所以我后退两步,尝试打开由 Carlos 库示例生成的简单文件,效果是一样的。有没有机会在代码后面“修复”文件,以便 MS Excel 也可以在没有任何警告的情况下正确打开它?
Dim book As Workbook = New Workbook()
Dim sheet As Worksheet = book.Worksheets.Add("Sample")
Dim row As WorksheetRow = sheet.Table.Rows.Add()
row.Cells.Add("Hello World")
book.Save("D:\Folder\test.xls")
您必须提供文件扩展名 xlsx。
旧的 xls 实际上是 office 文件的传统(封闭)二进制格式。
但是,自 office 2007 以来,Microsoft 对所有 office 文档采用了开放 xml 格式(好吧,outlook pst 和 MS-Access 是例外)。事实上,如果您使用任何办公文档(word、power-point、excel)等,请尝试将 xlsx 文档重命名为 zip 文件。您发现现在可以打开 zip 存档,并且可以 see/look 甚至修改该文档中的 xml。
(尝试将此重命名为 zip 文件以获得乐趣和咯咯笑声 - 你会发现实际上什至不需要任何第 3 方工具来打开、播放和弄乱 zip 存档中的内容(所以, 所有办公文件实际上都是一个简单的 zip 存档!!!)。
所以,较新的 office 文件格式实际上是 xml 标记 - 您可以对其进行修改!!
无论如何,毫无疑问,您正在使用的库因此使用了上述 feature/fact 的办公文档,现在正在 xml 格式化,而不是专有的 Microsoft 二进制格式 - 实际上您可以修改此类文档现在在任何能够打开 zip 文件和修改文本文件的计算机上。
因此,您给文档名称指定了一个旧的二进制文件名 (xls),但打开的是 xml 格式的文件(纯文本),因此 Excel 正在检测此 fact/issue。因此,您需要为该文档提供 open office xml 格式扩展名 (xlsx)。