0
我一直在使用NPOI來讀取Excel文件,現在我需要寫出文件。我正在嘗試使用WorkbookFactory,它並未在線顯示大量示例(也未出現在CodePlex上的NPOI示例中)。下面是代碼:NPOI ArgumentOutOfRangeException on WorkbookFactory.Create
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)
雖然我測試,我正在嘗試寫入我的桌面。 – Tim
哦,對不起,我沒有仔細閱讀您的帖子,堆棧和消息明確指出Position屬性設置爲負數,而不是模式超出範圍。 – Quantic
好吧,我的眼睛開始從源代碼中查看,但我敢肯定,你需要一個'.xls'文件的外殼來讓代碼工作,並且我假定你正在創建文件(由於'FileMode.OpenOrCreate'),所以你得到一個異常,因爲[源代碼](https://github.com/tonyqus/npoi/blob/master/ooxml/POIXMLDocument.cs)「讀取」4個字節,然後將數據流倒回4個字節,但對於您來說,它將從0倒退到-4,從而引發異常。 – Quantic