【问题标题】:FlexCel created corrupted xlsx fileFlexCel 创建了损坏的 xlsx 文件
【发布时间】:2018-12-27 14:07:53
【问题描述】:

我使用FlexCel 库创建.xlsx 格式的Excel 报告。

.xls 格式创建文件时 - 一切正常。

当我尝试创建.xlsx 格式的文件时,文件已创建,但是当我通过 Excel 打开它时,我收到文件已损坏且无法打开的错误消息。该文件的大小是 .xls 的一半。

如果有人遇到过类似的问题或知道解决办法,我将非常感谢解答。


编辑: 我的代码

    var templateFilePath = "D:/template.xlsx";
    var newReportPath = "D:/report.xlsx";
    using (var fr = new FlexCelReport(true))
    {
        fr.AddTable("SOReport", dataTable);
        fr.Run(
            templateFilePath,
            newReportPath
        );
    }

【问题讨论】:

  • 如果您能提供minimal reproducible example,那就太好了。
  • 您使用了错误的扩展名。您不能将 xls 重命名为 xlsx 并期望它能够正常工作。格式不同。要创建 xlsx,您必须在 excel 中打开 xls,然后将其保存到 xlsx。
  • 鉴于文件大小只有一半,因此假设该文件还没有被重命名为 @jdweng 似乎是合理的。
  • Flexdcellis 检查文件扩展名并将其保存为不同的格式,以适应文件大小的变化。

标签: c# excel xlsx xls flexcel


【解决方案1】:

我在使用旧版本的 FlexCel 以 xlsx 格式导出时遇到了同样的问题。

目前我已经在 FlexCel v5.5.1.0 上对其进行了测试,并且有一些有趣的行为:
如果我使用 Excel 2016 或更高版本创建 xlsx 模板 - 尝试打开导出的 xlsx 文件时出现“文件已损坏”错误。

但如果我使用 Excel 2013 或更低版本来创建 xlsx 模板 - 那么我可以完美地打开它而不会出错。

另外提一下,如果您在 Excel 2016 或更高版本中打开由 Excel 2013 或更低版本创建的 xlsx 模板并保存 - 以后无法将其恢复到工作状态。 模板会丢失。

为时已晚,但希望对您有所帮助。


附:可能,FlexCel 团队(TMS 软件)从 v6.7.16.0 版本的 FlexCel 开始修复它。我认为是这样,因为文档中说了类似的话:https://www.tmssoftware.com/site/flexcelnet.asp?s=history
点如Improved : Improved compatibility with invalid xls and xlsx files
但我不能争辩。

【讨论】:

  • 谢谢你,我开始相信我对同样的行为很偏执:-D 我有使用 FlexCel 5.7.6 的旧框架,我无法更改。我使用 Office 365 更改模板,并在使用 FlexCel 填充后文件损坏。现在我尝试在 Excel 2016 中重新保存相同的模板,幸运的是一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多