前两天用NPOI来操作Office软件,在使用的时候有点问题,也有收获,就做个笔记 记录下来,主要做的事数据的导出功能。一些公共的方法,做个笔记。 更多的详细内容可以到NPOI的官方教程去看 http://tonyqus.sinaapp.com/
1.引用NPOI
这个,使用第三方类库就要添加DLL ,我使用的是1.2.5的版本 ,具体的版本可以在属相中找到 如下图。 貌似最新的版本到了2.0了
2.创建简单的一个Excel
MemoryStream ms = new MemoryStream(); //创建内存流 //创建一个文件 string fileName = "D://xinjian.xlsx"; IWorkbook workbook = new HSSFWorkbook();//IWorkbook和HSSFWorkbook的命名空间分别是NPOI.HSSF.UserModel;NPOI.SS.UserModel; 记得引用 ISheet sheet1 = workbook.CreateSheet("sheet1");//创建一个工作薄 括号内为名称 IRow dataRow = sheet1.CreateRow(1);//创建数据行 1代表是在第几行创建 变量 dataRow.CreateCell(1).SetCellValue("第一行第一列");//创建单元格 并且赋值 workbook.Write(ms); ms.Flush(); ms.Position = 0; using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); data = null; }
3.获取Excel数据
4.设置高度
headerRow.Height = 100 * 20;//设置第一行的高度 //Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。
5.设置宽度
sheet1.SetColumnWidth(1, 3 * 256);//设置宽 //这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。
6.设置样式
headerRow.GetCell(1).CellStyle = Getcellstyle(workbook, "header");//设置样式 //单元格样式 static ICellStyle Getcellstyle(IWorkbook wb, string type) { //HSSFCellStyle cels = new HSSFCellStyle (1, ICellStyle cellStyle = wb.CreateCellStyle(); cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER; switch (type) { case "header": cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.TOP; cellStyle.WrapText = true;//自动换行 break; case "program": cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND; cellStyle.FillForegroundColor = 26; break; case "groupName": cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND; cellStyle.FillForegroundColor = 52; break; case "columnName": cellStyle.FillPattern = FillPatternType.SOLID_FOREGROUND; cellStyle.FillForegroundColor = 50; break; } return cellStyle; } //在这里填充的单元格的背景色不是FillBackgroundColor 而是 FillForegroundColor 很奇怪 而且 必须设置FillPattern这个属性
7.颜色对比表
最后,给大家提供一个操作NPOI简单的类库,希望有所帮助 点击下载
时间: 2024-10-03 04:24:48