我一直在使用NPOI来读取Excel文件,现在我需要写出文件。我正在尝试使用WorkbookFactory,它没有出现在很多在线示例中(也没有出现在CodePlex上的NPOI示例中)。这是代码:
this.FileStream = new FileStream(
this.FilePath,
FileMode.OpenOrCreate,
FileAccess.ReadWrite);
this.Workbook = WorkbookFactory.Create(
this.FileStream);
当它到达第二个语句时,我收到一个带有以下消息的ArgumentOutOfRangeException:"Non-negative number required.\r\nParameter name: value".
调用堆栈中的下几行:
at System.IO.FileStream.set_Position(Int64 value)
at NPOI.Util.PushbackStream.set_Position(Int64 value)
at NPOI.POIXMLDocument.HasOOXMLHeader(Stream inp)
at NPOI.SS.UserModel.WorkbookFactory.Create(Stream inputStream)
答案 0 :(得分:2)
WorkbookFactory(指向POI文档的链接)从输入流中读取现有的文件数据,并在运行中确定是创建HSSFWorkbook
还是{{1 (即您是否正在使用XLS或类似XLSX的文件)。
从您的代码中,您似乎正在尝试使用此类创建新文件。这不是WorkbookFactory可以帮助你的东西。要写文件,请使用以下模式:
XSSFWorkbook
(换句话说,WorkbookFactory是类工厂,而不是文件工厂: - ))