国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現將DataTable內容輸出到Excel表格的方法

2020-01-24 01:32:20
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現將DataTable內容輸出到Excel表格的方法。分享給大家供大家參考。具體如下:

1.關于本文

本文描述了一個函數(SaveToExcel),該函數可以將DataTable數據內的數據輸出到Excel表格中

2.相關說明

1)本文中使用這個函數將一個DataTable中的內容輸出到路徑名為addr的目錄下:

復制代碼 代碼如下:
public void SaveToExcel(string addr, System.Data.DataTable dt)

2)這個函數需要引用Microsoft.Office.Interop.Excel命名空間

需要添加引用:Microsoft Excel 14.0 Object Library

并在程序的最上方添加:

復制代碼 代碼如下:
using Excel = Microsoft.Office.Interop.Excel;

3)文程序在窗體的保存按鈕(btnSave)單擊事件中調用了函數SaveToExcel:

//按鈕:將數據保存到Excel表格中private void btnSave_Click(object sender, EventArgs e){  SaveToExcel(txtAddress.Text, (DataTable)dgvTable4Output.DataSource);}

3.程序界面

4.程序代碼

Load函數部分:設置數據源

private void FormMain_Load(object sender, EventArgs e){  System.Data.DataTable dt;   string s1 = "甲乙丙丁戊己庚辛壬癸";  string s2 = "子丑寅卯辰巳午未申酉戌亥";  dt = new System.Data.DataTable("天干地支表");  //行表格  dt.Columns.Add("列0"); dt.Columns.Add("列1");  dt.Columns.Add("列2"); dt.Columns.Add("列3");  dt.Columns.Add("列4"); dt.Columns.Add("列5");  dt.Columns.Add("列6"); dt.Columns.Add("列7");  dt.Columns.Add("列8"); dt.Columns.Add("列9");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  dt.Rows.Add("", "", "", "", "", "", "", "", "", "");  //生成干支表  int x = 0, y = 0;  for (int i = 0; i < 6; i++)  {    for (int j = 0; j < 10; j++)    {      dt.Rows[i][j] = s1[x].ToString() + s2[y].ToString();      x++; x = (x < s1.Length ? x : 0);      y++; y = (y < s2.Length ? y : 0);    }  }  dgvTable4Output.DataSource = dt;}

btnSave單擊事件部分:調用函數,將數據源存儲到Excel表格中

//按鈕:將數據保存到Excel表格中private void btnSave_Click(object sender, EventArgs e){  SaveToExcel(txtAddress.Text, (DataTable)dgvTable4Output.DataSource);}

函數SaveToExcel部分:

/// <summary>/// 將數據表保存到Excel表格中/// </summary>/// <param name="addr">Excel表格存放地址(程序運行目錄后面的部分)</param>/// <param name="dt">要輸出的DataTable</param>public void SaveToExcel(string addr, System.Data.DataTable dt){  //0.注意:  // * Excel中形如Cells[x][y]的寫法,前面的數字是列,后面的數字是行!  // * Excel中的行、列都是從1開始的,而不是0  //1.制作一個新的Excel文檔實例  Excel::Application xlsApp = new Excel::Application();  xlsApp.Workbooks.Add(true);  /* 示例輸入:需要注意Excel里數組以1為起始(而不是0)    * for (int i = 1; i < 10; i++)    * {    *   for (int j = 1; j < 10; j++)    *   {    *     xlsApp.Cells[i][j] = "-";     *   }    * }    */  //2.設置Excel分頁卡標題  xlsApp.ActiveSheet.Name = dt.TableName;  //3.合并第一行的單元格  string temp = "";  if (dt.Columns.Count < 26)  {    temp = ((char)('A' + dt.Columns.Count)).ToString();  }  else if (dt.Columns.Count <= 26 + 26 * 26)  {    temp = ((char)('A' + (dt.Columns.Count - 26) / 26)).ToString()      + ((char)('A' + (dt.Columns.Count - 26) % 26)).ToString();  }  else throw new Exception("列數過多");  Excel::Range range = xlsApp.get_Range("A1", temp + "1");  range.ClearContents(); //清空要合并的區域  range.MergeCells = true; //合并單元格  //4.填寫第一行:表名,對應DataTable的TableName  xlsApp.Cells[1][1] = dt.TableName;  xlsApp.Cells[1][1].Font.Name = "黑體";  xlsApp.Cells[1][1].Font.Size = 25;  xlsApp.Cells[1][1].Font.Bold = true;  xlsApp.Cells[1][1].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中  xlsApp.Rows[1].RowHeight = 60; //第一行行高為60(單位:磅)  //5.合并第二行單元格,用于書寫表格生成日期  range = xlsApp.get_Range("A2", temp + "2");  range.ClearContents(); //清空要合并的區域  range.MergeCells = true; //合并單元格  //6.填寫第二行:生成時間  xlsApp.Cells[1][2] = "報表生成于:" + DateTime.Now.ToString();  xlsApp.Cells[1][2].Font.Name = "宋體";  xlsApp.Cells[1][2].Font.Size = 15;  //xlsApp.Cells[1][2].HorizontalAlignment = 4;//右對齊  xlsApp.Cells[1][2].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中  xlsApp.Rows[2].RowHeight = 30; //第一行行高為60(單位:磅)  //7.填寫各列的標題行  xlsApp.Cells[1][3] = "序號";  for (int i = 0; i < dt.Columns.Count; i++)  {    xlsApp.Cells[i + 2][3] = dt.Columns[i].ColumnName;  }  xlsApp.Rows[3].Font.Name = "宋體";  xlsApp.Rows[3].Font.Size = 15;  xlsApp.Rows[3].Font.Bold = true;  xlsApp.Rows[3].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中  //設置顏色  range = xlsApp.get_Range("A3", temp + "3");  range.Interior.ColorIndex = 33;  //8.填寫DataTable中的數據  for (int i = 0; i < dt.Rows.Count; i++)  {    xlsApp.Cells[1][i + 4] = i.ToString();    for (int j = 0; j < dt.Columns.Count; j++)    {      xlsApp.Cells[j + 2][i + 4] = dt.Rows[i][j];    }  }  range = xlsApp.get_Range("A4", temp + (dt.Rows.Count + 3).ToString());  range.Interior.ColorIndex = 37;  range.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;  //9.描繪邊框  range = xlsApp.get_Range("A1", temp + (dt.Rows.Count + 3).ToString());  range.Borders.LineStyle = 1;  range.Borders.Weight = 3;  //10.打開制作完畢的表格  //xlsApp.Visible = true;  //11.保存表格到根目錄下指定名稱的文件中  xlsApp.ActiveWorkbook.SaveAs(Application.StartupPath + "/" + addr);  xlsApp.Quit();  xlsApp = null;  GC.Collect();}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蚌埠市| 平昌县| 宜兰县| 营口市| 肥乡县| 义马市| 津南区| 海淀区| 潮州市| 南涧| 涞源县| 安徽省| 仙游县| 永泰县| 陵水| 延安市| 西平县| 锡林郭勒盟| 普定县| 颍上县| 敦煌市| 来安县| 六枝特区| 德格县| 正宁县| 中阳县| 安仁县| 通江县| 高安市| 灌阳县| 柳州市| 焦作市| 金山区| 翼城县| 扎鲁特旗| 新沂市| 桐柏县| 樟树市| 德兴市| 友谊县| 晋江市|