npoi這個office寫入,我我的有點不方便,可是由於須要使用因此不得不去用了。工具
緣由:excel
一、 沒文檔code
二、 網上的案例版本不一樣對象
三、 對於複雜列很差作處理blog
跟網上其餘工具的對比,好處就是不須要依賴Microsoft的office一套組件就能夠對excel進行寫入和讀取。文檔
第一個核心就是IWorkbook對象string
經過它能夠操做兩種格式的excel,一種是*.xls(HSSFWorkbook),一種是*.xlsx(XSSFWorkbook)it
IWorkbook wk = new HSSFWorkbook(); IWorkbook wk = new XSSFWorkbook();
第二個的核心就是Isheet對象io
經過它能夠操做兩種格式的excel的工做簿,一種是*.xls(HSSFSheet),一種是*.xlsx(XSSFSheet)class
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(); }