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

 

參考資料:

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

 

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


 

設置Excel的自動篩選功能

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

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

通過設置要進行自動篩選的單個單元格或者多個單元格,然后在sheet上進行設置自動篩選。

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

順便一起說一個

單元格數字格式的問題

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

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

//建立空白工作薄
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM