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中读取现有文件数据,并确定是否创buildHSSFWorkbookXSSFWorkbook (即,您是否使用XLS或XLSX文件)。

从你的代码看来,你正在尝试使用这个类创build一个新的文件。 这不是WorkbookFactory可以帮助您的。 要写入文件,请使用以下模式:

 var workbook = new XSSFWorkbook(); ... using (var fileData = new FileStream(@"path\filename.xlsx", FileMode.Create)) { workbook.Write(fileData); } 

(换句话说,WorkbookFactory是一个工厂,而不是文件工厂:-))