我正在做一些项目,在那里我使用NPOI库从excel读取一些数据。一切都很好,但后来我试着读了.xls,结果它停止了工作。(对.xlsx来说一切都很好)。
我最后的尝试是:
IWorkbook hssfwb;
using (FileStream file = new FileStream(@filePath, FileMode.Open, FileAccess.Read))
{
hssfwb = WorkbookFactory.Create(file);
}我得到的例外是:
您的流既不是OLE2流,也不是OOXML流。
我需要的是一种使用NPOI库打开.xls文件的方法。提前谢谢。
发布于 2020-03-19 10:57:18
要使用旧的Excel97-2003格式(以“.xls”结尾的文件)操作,可以使用HSSFWorkbook类。
如果检查文件名的扩展名,则可以在将文件读入IWorkbook模型时处理这两种文件类型:
MemoryStream fileStream = new MemoryStream(fileContent);
IWorkbook workbook = null;
if (fileName.ToLower().EndsWith(".xlsx"))
{
// new OOXML format
workbook = new XSSFWorkbook(fileStream);
}
else
{
// old Excel 97 format
workbook = new HSSFWorkbook(fileStream);
}从那里开始,您可以像往常一样处理电子表格的内容:
// get first sheet
ISheet sheet = workbook.GetSheetAt(0);
// get header names as string array
IRow headerRow = sheet.GetRow(rowNumber);
List<ICell> headerCells = headerRow.Cells;
List<string> rowData = new List<string>();
foreach (ICell cell in headerCells)
{
rowData.Add(cell.ToString());
}https://stackoverflow.com/questions/41125758
复制相似问题