C# - DataTable to Excel - DataTable轉Excel/DataTable輸出Excel DataSet

C# - DataTable to Excel - DataTable轉Excel/DataTable輸出Excel DataSet

 DataTable/DataSet直接輸出成Excel

這邊有使用NPOI,記得要裝

如果用新版的VS2019開發會自動提示可以一鍵安裝


using NPOI;

using NPOI.SS.UserModel;

using NPOI.HSSF.UserModel;


方法給大家直接套

 DataTable

         public void DataTableToExcelFile(DataTable dt)

        {

           

            IWorkbook wb = new HSSFWorkbook();

            ISheet ws;


            //IWorkbook wb = new XSSFWorkbook();

            //ISheet ws;這邊自行選擇要新版或舊版的excel,記得改了的話下面輸出副檔名也要改 

                                 if (dt.TableName != string.Empty) { ws = wb.CreateSheet(dt.TableName); } else { ws = wb.CreateSheet("Sheet1"); }

                ws.CreateRow(0);

                for (int i = 0; i < dt.Columns.Count; i++)

                {

                    ws.GetRow(0).CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);

                }


                for (int i = 0; i < dt.Rows.Count; i++)

                {

                    ws.CreateRow(i + 1);

                    for (int j = 0; j < dt.Columns.Count; j++)

                    {

                        ws.GetRow(i + 1).CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());

                    }

                }              

            

            FileStream file = new FileStream(@"檔案路徑以及檔案名稱"+ ".xls", FileMode.Create);

            wb.Write(file);

            file.Close();

        }







DataSet

 public void DataSetToExcelFile(DataSet ds)

        {         

            IWorkbook wb = new HSSFWorkbook();

            ISheet ws; 


            ////建立Excel 2007檔案

            //IWorkbook wb = new XSSFWorkbook();

            //ISheet ws; 這邊自行選擇要新版或舊版的excel,記得改了的話下面輸出副檔名也要改


            for (int h = 0; h < ds.Tables.Count; h++)

            {

                DataTable dt = ds.Tables[h];

                if (dt.TableName != string.Empty)

                {

                    ws = wb.CreateSheet(dt.TableName);

                }

                else

                {

                    ws = wb.CreateSheet("Sheet1");

                }

               ws.CreateRow(0);

                for (int i = 0; i < dt.Columns.Count; i++)

                {

                    ws.GetRow(0).CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);

                }


                for (int i = 0; i < dt.Rows.Count; i++)

                {

                    ws.CreateRow(i + 1);

                    for (int j = 0; j < dt.Columns.Count; j++)

                    {

                        ws.GetRow(i + 1).CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());

                    }

                }              

            }

            FileStream file = new FileStream(@"檔案路徑以及檔案名稱" + ".xls", FileMode.Create);

            wb.Write(file);

            file.Close();


        }

留言