最近接觸了用c#導出Excel文件的一些操作。 使用NPOI的優勢是,開源,操作靈活,不需要下載OFFICE軟體,速度快,不過聽說,數據量過大的時候,不是很好用,大概那都是幾兆的時候吧,不過目前用於我的需要,基本是夠了。 關於NPOI的基本操作:http://blog.csdn.net/pan_ju ...
最近接觸了用c#導出Excel文件的一些操作。
使用NPOI的優勢是,開源,操作靈活,不需要下載OFFICE軟體,速度快,不過聽說,數據量過大的時候,不是很好用,大概那都是幾兆的時候吧,不過目前用於我的需要,基本是夠了。
關於NPOI的基本操作:http://blog.csdn.net/pan_junbiao/article/details/39717443
使用Npoi需要using幾個命名空間:
1 using NPOI; 2 using NPOI.HSSF.UserModel; 3 using NPOI.XSSF.UserModel; 4 using NPOI.XSSF.Util; 5 using NPOI.SS.UserModel; 6 using NPOI.SS.Util;
首先打開文件,需要文件路徑,操作模式以及操作許可權。
這裡打開excel文件有兩種對應格式,HSSFWorkbook和XSSFWorkbook,都是繼承的IWorkbook。
GetSheet()函數,獲取sheet名的方式,獲取sheet來操作。
1 FileStream file = new FileStream(FileSer, FileMode.Open, FileAccess.Read);//讀入excel模板 2 //HSSF適用2007以前的版本,XSSF適用2007版本及其以上的。 3 XSSFWorkbook UnionBook = new XSSFWorkbook(file); 4 XSSFSheet unionSheet = null; 5 unionSheet = (XSSFSheet)UnionBook.GetSheet("sheet1");
NPOI操作excel的方式,有兩個特點:
1.它的操作,都是基於Excel的最小單文單元格來的,而且要先獲取行getrow(int rownum),然後再獲取該行的單元格,getcell(int cellnum)。
2.它的每次獲取時,對行或單元格的操作,基於整個sheet,都是從0開始的。也就是要獲取第一行的話,是getrow(0),獲取第一個單元格的話,是getcell(0)。
按理說,用了XSSFSheet,應該用XSSFRow和XSSFCell的,不過GetRow方法返回的是IRow,所以只能用IRow定義了,ICell的情況也是一樣的。
1 IRow unionRow = unionSheet.GetRow(0); 2 ICell unionCell = unionRow.GetCell(2);
3 unionCell.SetCellValue("第一個值");//設值
下麵的函數,用於合併單元格的。
1 //CellRangeAddress四個參數為:起始行,結束行,起始列,結束列 2 unionSheet.AddMergedRegion(new CellRangeAddress(0, 0, 2, 6));
以上就是基本的操作,在下一節,我會針對我所遇到的問題,寫出我的解決方案來的。