npoi读写excel导致excel文件格式损坏
2015-09-16 17:10
239 查看
用微软提供的
Microsoft.Office.Interop.Excel.dll可以很轻松的实现各种excel操作,但是前提是电脑必须安装excel软件。
因此,在不安装excel软件的情况下,实现对excel文件的操作,只能另选它法。我用的是npoi开源代码。
但是有个问题,用npoi打开excel文件再保存,即使不进行写操作,当双击excel文件的时候出错:文件格式已被损坏。
找了很多资料都不能解决我的问题。
解决这个问题有两点:
1.版本要对。注意npoi对excel2003和excel2007以上的文件操作的类和函数不同(2003是HSSFWorkbook,2007以上是XSSFWorkbook);
2.npoi读取和保存excel文件的方式要对(基本读取操作都可以,保存的时候要考究一下)
读取示例如下:
private IWorkbook wk;
using (FileStream fs = new FileStream(m_strNPOIFilePath, FileMode.Open, FileAccess.Read))
{
wk = new XSSFWorkbook(fs);//获取所有sheet页:wk.NumberOfSheets
}
保存操作如下:(至少,我的只能这样保存,另存为)
FileStream sw = File.Create(m_strFileName);
wk.Write(sw);
sw.Close();
Microsoft.Office.Interop.Excel.dll可以很轻松的实现各种excel操作,但是前提是电脑必须安装excel软件。
因此,在不安装excel软件的情况下,实现对excel文件的操作,只能另选它法。我用的是npoi开源代码。
但是有个问题,用npoi打开excel文件再保存,即使不进行写操作,当双击excel文件的时候出错:文件格式已被损坏。
找了很多资料都不能解决我的问题。
解决这个问题有两点:
1.版本要对。注意npoi对excel2003和excel2007以上的文件操作的类和函数不同(2003是HSSFWorkbook,2007以上是XSSFWorkbook);
2.npoi读取和保存excel文件的方式要对(基本读取操作都可以,保存的时候要考究一下)
读取示例如下:
private IWorkbook wk;
using (FileStream fs = new FileStream(m_strNPOIFilePath, FileMode.Open, FileAccess.Read))
{
wk = new XSSFWorkbook(fs);//获取所有sheet页:wk.NumberOfSheets
}
保存操作如下:(至少,我的只能这样保存,另存为)
FileStream sw = File.Create(m_strFileName);
wk.Write(sw);
sw.Close();
相关文章推荐
- java 指定时间时间戳
- 用NPOI操作EXCEL--画线(HSSFClientAnchor和HSSFSimpleShape 使用)
- 卓有成效的管理者
- [转]深入hibernate的三种状态
- liferay中如何获取实例的id和portletId
- 服务器控件中使用<%#...>, JS和html控件中使用<%=...>
- tftp通过“USB转串”连接主机和开发板
- Hadoop-2.4.1安装配置
- 关于“特权解除、陷入模拟”的理解
- JSP四大作用域
- JAVA中获取当前系统时间
- 时间戳转时间
- Android中判断网络是否可用
- C++的重载(overload)与重写(override
- css通配符
- jQuery时间冒泡
- 海信电视 LED55K370 升级固件总结【含固件下载地址】
- 二维数组作为参数的函数定义及调用方法
- iOS 打包工具生成
- 邮件服务器运作原理