首先下载NPOI组件,版本:NPOI 2.0
下载后添加引用(这里有.net2.0版和4.0版的,按需引用)
使用方法如下:
/// <summary> /// 保存成excel(NPOI方式) /// </summary> private void SaveToExcel() { List<Object> listFieldValue = FieldValueList;// 任意一个list或者其他数据 // 使用NPOI导出 NPOI.HSSF.UserModel.HSSFWorkbook stBook = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet stSheet = stBook.CreateSheet("参数计算表"); // 第一行(表头) NPOI.SS.UserModel.IRow stRow1 = stSheet.CreateRow(0); stRow1.CreateCell(0).SetCellValue("字段名"); stRow1.CreateCell(1).SetCellValue("参数值"); stRow1.CreateCell(2).SetCellValue("最小值"); stRow1.CreateCell(3).SetCellValue("最大值"); stRow1.CreateCell(4).SetCellValue("计算方法"); int iTotalCount = listFieldValue.Count; // 添加每一行数据 for (int i = 0; i < iTotalCount; i++) { NPOI.SS.UserModel.IRow stRowN = stSheet.CreateRow(i + 1); stRowN.CreateCell(0).SetCellValue(listFieldValue[i].Name); stRowN.CreateCell(1).SetCellValue(listFieldValue[i].Value); stRowN.CreateCell(2).SetCellValue(listFieldValue[i].Min); stRowN.CreateCell(3).SetCellValue(listFieldValue[i].Max); stRowN.CreateCell(4).SetCellValue(listFieldValue[i].Method); } // 自动列宽 for (int i = 0; i < 5; i++) { stSheet.AutoSizeColumn(i); } Microsoft.Win32.SaveFileDialog dlgSave = new Microsoft.Win32.SaveFileDialog(); // 默认文件名 dlgSave.FileName = "新建Excel表格"; // 默认扩展名 dlgSave.DefaultExt = ".xls"; // 默认过滤器 dlgSave.Filter = "Excel表格 (.xls)|*.xls"; // 显示保存对话框 Nullable<bool> bResult = dlgSave.ShowDialog(); if (bResult == true) { string strFileName = dlgSave.FileName; // 实例化一个文件流 FileStream streamFile = new FileStream(strFileName, FileMode.Create);
// 获得字节数组 System.IO.MemoryStream streamMemory = new System.IO.MemoryStream(); stBook.Write(streamMemory); byte[] data = streamMemory.ToArray(); // 开始写入 streamFile.Write(data, 0, data.Length); // 清空缓冲区、关闭流 streamFile.Flush(); streamFile.Close(); stBook = null; streamMemory.Close(); streamMemory.Dispose(); } }