WorkbookFactory.Create

时间:2016-07-05 22:18:35

标签: c# excel npoi

我一直在使用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)

1 个答案:

答案 0 :(得分:2)

WorkbookFactory(指向POI文档的链接)从输入流中读取现有的文件数据,并在运行中确定是创建HSSFWorkbook还是{{1 (即您是否正在使用XLS或类似XLSX的文件)。

从您的代码中,您似乎正在尝试使用此类创建文件。这不是WorkbookFactory可以帮助你的东西。要文件,请使用以下模式:

XSSFWorkbook

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