我制作了一个小包装类,它包含NPOI Excel旧格式(XLS,1997-2003)。代码类似于:
public class NpoiExcelDriver {
/// <summary>
/// Underlying workbook to work with.
/// </summary>
private HSSFWorkbook workbook;
// Open an XLS file specified by file name.
public void Open(string fileName)
{
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
this.workbook = new HSSFWorkbook(file, true);
}
}
// put data etc
public void PutData() {...}
// Save the workbook under specified file name.
public void SaveAs(string fileName)
{
using (FileStream fff = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
this.workbook.Write(fff);
}
}
}
在客户端使用它时,我的操作如下:
NpoiExcelDriver output = new NpoiExcelDriver();
output.Open(@"C:\Temp\Test.xls");
output.PutData(1, 2, 1, "Someone");
output.PutData(1, 2, 2, "Was");
output.PutData(1, 2, 3, "Here");
output.SaveAs(@"C:\Temp\Test2.xls");
当我运行此代码时,我得到一个例外:
NPOI.dll中出现“NPOI.HPSF.ReadingNotSupportedException”类型的第一次机会异常
我不知道我做错了什么 - 我已经检查了其他似乎做同样但无济于事的例子。我甚至尝试写入MemoryStream
,就像我在ASP.NET示例中看到的那样,但我遇到了同样的问题。
如果我自己创建工作簿然后尝试保存它就可以了。
有什么建议吗?