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();
}
