WorkbookFactory.Create上的NPOI ArgumentOutOfRangeException
我一直在使用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)
WorkbookFactory (链接到POI文档)从inputstream中读取现有文件数据,并确定是否创buildHSSFWorkbook
或XSSFWorkbook
(即,您是否使用XLS或XLSX文件)。
从你的代码看来,你正在尝试使用这个类创build一个新的文件。 这不是WorkbookFactory可以帮助您的。 要写入文件,请使用以下模式:
var workbook = new XSSFWorkbook(); ... using (var fileData = new FileStream(@"path\filename.xlsx", FileMode.Create)) { workbook.Write(fileData); }
(换句话说,WorkbookFactory是一个类工厂,而不是文件工厂:-))