使用 NPOI 读取 Excel 文件时出现 InvalidOperationException
InvalidOperationException while reading Excel file with NPOI
我有一段简单的代码
public JsonResult ParseExcel(HttpPostedFileBase file)
{
var uploadedFileContent = file.InputStream;
if (POIXMLDocument.HasOOXMLHeader(uploadedFileContent))
{
//xlsx
var workbook = new XSSFWorkbook(uploadedFileContent);
var sheet = workbook.GetSheetAt(0);
}
return new JsonResult{};
}
然后我尝试使用 NPOI 和上传的 Excel 文件创建工作簿,我收到错误:异常详细信息:
消息:单元格 G33 的超链接引用了关系 rId5,但该关系不存在!
我发现这是因为G33单元格有一个超链接,是这样的:xxx@yyy.com'。它最后有一个单引号。如果我删除单引号,一切都会按预期进行。除了编辑 Excel 文件并删除单引号之外,还有其他方法可以解决此问题吗?
我尝试使用 WorkbookFactory.Create 并将第二个参数指定为 ImportOption.TextOnly。我尝试先创建 OPCPackage 对象,然后将其作为参数传递。但是,我收到了相同的消息。
将文件传递给 XSSFWorkbook
构造函数,破坏了整个东西,我没有找到任何其他解决方案然后切换到不同的库。
我有一段简单的代码
public JsonResult ParseExcel(HttpPostedFileBase file)
{
var uploadedFileContent = file.InputStream;
if (POIXMLDocument.HasOOXMLHeader(uploadedFileContent))
{
//xlsx
var workbook = new XSSFWorkbook(uploadedFileContent);
var sheet = workbook.GetSheetAt(0);
}
return new JsonResult{};
}
然后我尝试使用 NPOI 和上传的 Excel 文件创建工作簿,我收到错误:异常详细信息: 消息:单元格 G33 的超链接引用了关系 rId5,但该关系不存在!
我发现这是因为G33单元格有一个超链接,是这样的:xxx@yyy.com'。它最后有一个单引号。如果我删除单引号,一切都会按预期进行。除了编辑 Excel 文件并删除单引号之外,还有其他方法可以解决此问题吗?
我尝试使用 WorkbookFactory.Create 并将第二个参数指定为 ImportOption.TextOnly。我尝试先创建 OPCPackage 对象,然后将其作为参数传递。但是,我收到了相同的消息。
将文件传递给 XSSFWorkbook
构造函数,破坏了整个东西,我没有找到任何其他解决方案然后切换到不同的库。