npoi這個office寫入,我個人有點不方便,但是因為需要使用所以不得不去用了。
原因:
1、 沒文檔
2、 網上的案例版本不同
3、 對於復雜列不好做處理
跟網上其他工具的對比,好處就是不需要依賴Microsoft的office一套組件就可以對excel進行寫入和讀取。
第一個核心就是IWorkbook對象
通過它可以操作兩種格式的excel,一種是*.xls(HSSFWorkbook),一種是*.xlsx(XSSFWorkbook)
IWorkbook wk = new HSSFWorkbook(); IWorkbook wk = new XSSFWorkbook();
第二個的核心就是Isheet對象
通過它可以操作兩種格式的excel的工作簿,一種是*.xls(HSSFSheet),一種是*.xlsx(XSSFSheet)
ISheet sheet = wk.CreateSheet(“”);
或者是獲取已有的工作簿
ISheet sheet = wk.GetSheetAt(int indx)
Isheet對象主要負責excel的工作簿
第三個核心就是Irow/Icell對象
IRow對象可以實現對列的控制
ICell對象可以實現對行單元格的控制
IRow需要通過工作簿進行新增
IRow row = sheet.CreateRow(int indx);
ICell需要通過IRow明確列的位置才能對行的單元格進行設置,單元格只能通過IRow來創建
ICell cell = row.CreateCell(int indx);
三個核心能夠對excel進行基本的寫入的操作
案例:
IWorkbook wk = null; ISheet sheet = null; //獲取文件格式 string extension = Path.GetExtension(filePath); //根據不同版本的excel格式獲取不同的寫入對象 if (extension.Equals(".xls")) { wk = new HSSFWorkbook(); } else { wk = new XSSFWorkbook(); } //創建Excel工作簿 sheet = wk.CreateSheet("new sheet"); //創建指定列 IRow row = sheet.CreateRow(int indx) //創建指定行 ICell cell = row.CreateCell(int indx) //將制作好的excel生成到系統上 MemoryStream ms = new MemoryStream(); wk.Write(ms); using(varfs=newFileStream(filePath,FileMode.Create,FileAccess.Write,FileShare.None,4096,true)) { byte[] b = ms.ToArray(); await fs.WriteAsync(b, 0, b.Length); ms.Close(); fs.Flush(); fs.Close(); }