因公司項目須要添加數據導出功能故此添加,找了幾種方式發現該方式具備 無需依賴本機安裝office環境,使用靈活等優勢故採用此方式。數組
Nuget 直接安裝NPOI便可ide
1.根據須要使用2003或者2007的不一樣選擇不一樣建立操做對象 spa
IWorkbook fileWorkbook; try { fileWorkbook = new XSSFWorkbook(); } catch { fileWorkbook = new HSSFWorkbook(); }
2.Excel的操做必需要創建在Sheet的基礎上 因此須要先創建一個Sheetcode
ISheet sheet = fileWorkbook.CreateSheet("Sheet1") as ISheet;
3.根據須要 能夠設置列寬orm
sheet.SetColumnWidth(0, 50 * 256);//設置寬度首列
其中 第一個參數爲列索引 第二個參數爲字符數 例子表明容許顯示50個字符 如100字符 則爲100* 256對象
4.建立行blog
IRow row = sheet.CreateRow(rowIndex);
注: 行寬度直接用row實例便可修改 如:row.Height=30 * 20;索引
5.建立單元格get
ICell cellTitle = row.CreateCell(0); cellTitle.SetCellValue($"銷售彙總({StartDate}至{EndDate})");
注: string
1.0爲列索引
2.第二行爲賦值方式展現
6.設置居中
//設置單元格格式 居中 ICellStyle cellstyle = fileWorkbook.CreateCellStyle(); cellstyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; cellstyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; cellTitle.CellStyle = cellstyle;
直接賦值到所在單元格cellStyle屬性便可
7.合併單元格
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 5));//合併單元格 0行0列到0行5列
參數從左到右分別爲 起始行號 結束行號 起始列號 結束列號
8.保存到文件
public string OutputClient(IWorkbook fileWorkbook) { //轉爲字節數組 MemoryStream stream = new MemoryStream(); fileWorkbook.Write(stream); var buf = stream.ToArray(); var path = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Export"); string fileName = Path.Combine(path, $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xls"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //保存爲Excel文件 using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { fs.Write(buf, 0, buf.Length); fs.Flush(); } return fileName; }
這裏提供一個通用的保存方法 保存到exe 文件目錄下的Export 文件夾 沒有改文件夾會自動建立 文件名爲日期到毫秒