C# 用NPOI保存为Excel文件

首先下载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();
            }
        }



猜你喜欢

转载自blog.csdn.net/icemaker88/article/details/18551943