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