如何解决OpenXmlSDK 创建 xlsx ClosedXml 无法读取,但 NPOI、Epplus 可以读取,并显示消息`指定的包无效缺少主要部分`
OpenXmlSDK 创建 xlsx ClosedXml 无法读取,但 NPOI、Epplus 可以读取,并显示消息 The specified package is invalid. The main part is missing.
ClosedXml 代码:
void Main()
{
var path = @"C:\Users\Wei\AppData\Local\Temp\099e17f7-a98b-42d5-8b75-4e6775914f9c.xlsx";
using (var workbook = new XLWorkbook(path))
{
var worksheet = workbook.Worksheets.First();
var cells = worksheet.Cells();
}
}
消息:指定的包无效。主要部分不见了。
来源:DocumentFormat.OpenXml
堆栈跟踪:
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load()
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(String path,Boolean readWriteMode)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path,Boolean isEditable,OpenSettings openSettings)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path,Boolean isEditable)
at ClosedXML.Excel.XLWorkbook.LoadSheets(String fileName) in C:\projects\closedxml\ClosedXML\Excel\XLWorkbook_Load.cs:line 42
at ClosedXML.Excel.XLWorkbook.Load(String file) in C:\projects\closedxml\ClosedXML\Excel\XLWorkbook_Load.cs:line 33
at ClosedXML.Excel.XLWorkbook..ctor(String file,XLEventTracking eventTracking) in C:\projects\closedxml\ClosedXML\Excel\XLWorkbook.cs:line 718
at ClosedXML.Excel.XLWorkbook..ctor(String file) in C:\projects\closedxml\ClosedXML\Excel\XLWorkbook.cs:line 709
at UserQuery.Main() in C:\Users\Wei\AppData\Local\Temp\LINQPad6\_zeygkceo\zmngrx\LINQPadQuery:line 5
at LINQPad.ExecutionModel.ClrQueryRunner.Run()
at LINQPad.ExecutionModel.Server.RunQuery(QueryRunner runner)
我试过解压缩 xlsx 文件,如下所示:
文件夹树和链接:https://github.com/shps951023/MyFiles/tree/master/2021-03-02/099e17f7-a98b-42d5-8b75-4e6775914f9c
│ [Content_Types].xml
│
├─xl
│ │ sharedStrings.xml
│ │ styles.xml
│ │ workbook.xml
│ │
│ ├─worksheets
│ │ sheet1.xml
│ │
│ └─_rels
│ workbook.xml.rels
│
└─_rels
.rels
解决方法
因为 ZipArchiveEntry 创建的 xlsx 没有 CompressionOption 和 ContentType 以及 Uri 和包信息。
所以我用System.IO.Packaging.ZipPackage
可以解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。