今天学习了一下 读写excel,测试还算成功。不过npoi有点小纠结,不能读2007及以下版的格式。不过,如在excel 2007版本下另存为老版本格式,就可以读了。
我们平时调用的类是已经添加到引用的,如果想调用系统内置的没有添加引用的其他dll(*严格的说是在GAC中的Assembly)就要添加引用,在【.Net】选项卡中选择,对于另外一些第三方dll(*严格说是Assembly)则需要点击【浏览】选项卡选择对应的dll文件。
将NPOI包解压到硬盘中,然后在项目中添加引用,浏览,将解压目录下的dll全部添加进来
(*)POI是Apache的一个Java开源项目,NPOI是POI在.net下的移植版本,很多.Net的移植版本开源项目都是在原来的Java版本名称前加上N,比如NHibernate、NDoc、NUnit、NAnt。
下面是读的代码:
public static void readxls()
{
///读写excel需要引用“nopi”文件
//打开一个文件流,指向一个路径
using (FileStream stream = newFileStream(@"C:\Users\Administrator\Desktop\Book1.xls",FileMode.Open, FileAccess.Read))
{
//创建一个工作薄
HSSFWorkbook workbook = newHSSFWorkbook(stream);
//创建表的实例指向文件流工作薄的第一个表
HSSFSheet hs =workbook.GetSheet(workbook.GetSheetName(0));
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 2;j++)
{
创建行的实例
HSSFRow hr =hs.GetRow(i);
//创建列的实例
HSSFCell hc =hr.GetCell(j);
Console.Write(hc.ToString()+" ");
}
Console.WriteLine();
}
}
}
下面是写的代码:
public static void writexls()
{
///读写excel需要引用“nopi”文件
//创建一个工作薄
HSSFWorkbook workbook = newHSSFWorkbook();
//创建表的实例
HSSFSheet sheet = workbook.CreateSheet();
//新建一列
HSSFRow row = sheet.CreateRow(0);
row.CreateCell(0,HSSFCell.CELL_TYPE_STRING).SetCellValue("Hello");
row.CreateCell(1,HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(3.14);
//把工作薄写入文件流
using (FileStream stream = newFileStream(@"c:\1.xls", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
workbook.Write(stream);
}
}
注意:NPOI处理WPS生成的XLS有问题。