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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章