NPOI之Excel——合併單元格、設置樣式、輸入公式、設置篩選等

首先創建一個空白的工做簿用做測試,並在其中創建空白工做表,在表中創建空白行,在行中創建單元格,並填入內容: 
//創建空白工做簿
IWorkbook workbook = new HSSFWorkbook();
//在工做簿中:創建空白工做表
ISheet sheet = workbook.CreateSheet();
//在工做表中:創建行,參數爲行號,從0計
IRow row = sheet.CreateRow(0);
//在行中:創建單元格,參數爲列號,從0計
ICell cell = row.CreateCell(0);
//設置單元格內容
cell.SetCellValue("實習鑑定表");
 
 
設置單元格樣式:設置單元格樣式時須要注意,務必建立一個新的樣式對象進行設置,不然會將工做表全部單元格的樣式一同設置,它們應該共享的是一個樣式對象:
 
ICellStyle style = workbook.CreateCellStyle();
//設置單元格的樣式:水平對齊居中
style.Alignment = HorizontalAlignment.CENTER;
//新建一個字體樣式對象
IFont font = workbook.CreateFont();
//設置字體加粗樣式
font.Boldweight = short.MaxValue;
//使用SetFont方法將字體樣式添加到單元格樣式中 
style.SetFont(font);
//將新的樣式賦給單元格
cell.CellStyle = style;

設置單元格寬高:
  設置單元格的高度實際是設置其所在行高,因此要在單元格所在行上設置行高,行高設置數值好像是像素點的1/20,因此*20以便達到設置效果;
  設置單元格的寬度其實是設置其所在列寬,因此要在單元格所在列上設置(列的設置在工做表上),寬度數值好像是字符的1/256,因此*256以便達到設置效果。
 
//設置單元格的高度
row.Height = 30 * 20;
//設置單元格的寬度
sheet.SetColumnWidth(0, 30 * 256);
合併單元格:合併單元格其實是聲明一個區域,該區域中的單元格將進行合併,合併後的內容與樣式以該區域最左上角的單元格爲準。
 
 
//設置一個合併單元格區域,使用上下左右定義CellRangeAddress區域
//CellRangeAddress四個參數爲:起始行,結束行,起始列,結束列
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));

添加公式:使用Cell的CellFormula來設置公式,是一個字符串,公式前不須要加=號。
 
 
 
 
//經過Cell的CellFormula向單元格中寫入公式
//注:直接寫公式內容便可,不須要在最前加'='
ICell cell2 = sheet.CreateRow(1).CreateCell(0);
cell2.CellFormula = "HYPERLINK(\"測試圖片.jpg\",\"測試圖片.jpg\")";
將工做簿寫入文件查看效果:
//將工做簿寫入文件
using (FileStream fs = new FileStream("生成效果.xls", FileMode.Create, FileAccess.Write))
{
    workbook.Write(fs);
}
 
 
最終效果:
QQ截圖20130503205842

 

參考資料:html

NPOI的下載地址:http://npoi.codeplex.com/
NPOI的使用教程(中文):http://tonyqus.sinaapp.com/

 

出處:https://www.cnblogs.com/xwgli/archive/2013/05/03/3057824.htmljava


 

設置Excel的自動篩選功能app

最新導出數據須要使用Excel的篩選功能,網上多方查找,終於在一個繁體的網站上找到了方法,呃,這個網站仍是Java的,講的是POI,不過.NET的NPOI也就同樣用了。post

CellRangeAddress c = CellRangeAddress.ValueOf("A1");
sheet.SetAutoFilter(c);

經過設置要進行自動篩選的單個單元格或者多個單元格,而後在sheet上進行設置自動篩選。測試

(參考:http://www.javaworld.com.tw/jute/post/view?bid=11&id=301435字體

順便一塊兒說一個網站

單元格數字格式的問題spa

NPOI向Excel文件中插入數值時,可能會出現數字看成文本的狀況(即左上角有個綠色三角),這樣單元格的值就沒法參與運算。這是由於在SetCellValue設置單元格值的時候使用了字符串進行賦值,默認被轉換成了字符型。若是須要純數字型的,請向SetCellValue中設置數字型變量。code

以上兩個問題的示例代碼以下:orm

//創建空白工做薄
IWorkbook workbook = new HSSFWorkbook();

//在工做薄中創建工做表
ISheet sheet = workbook.CreateSheet();

//填充篩選的內容
sheet.CreateRow(0).CreateCell(0).SetCellValue("省份");
sheet.CreateRow(1).CreateCell(0).SetCellValue("河北省");
sheet.CreateRow(2).CreateCell(0).SetCellValue("湖南省");

//驗證數字格式問題
sheet.GetRow(1).CreateCell(2).SetCellValue("123");
sheet.GetRow(2).CreateCell(2).SetCellValue(123);

//設置Excel的自動篩選
CellRangeAddress c = CellRangeAddress.ValueOf("A1");
sheet.SetAutoFilter(c);

//寫文件
using (FileStream fs = new FileStream("haha.xls", FileMode.Create, FileAccess.Write))
{
    workbook.Write(fs);
}

最終的效果顯示:

QQ截圖20130708153031

更多NPOI相關:http://www.cnblogs.com/xwgli/category/467970.html 

 

出處:https://www.cnblogs.com/xwgli/p/3178153.html

相關文章
相關標籤/搜索