C#完成將DataTable內容輸入到Excel表格的辦法。本站提示廣大學習愛好者:(C#完成將DataTable內容輸入到Excel表格的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成將DataTable內容輸入到Excel表格的辦法正文
本文實例講述了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#法式設計有所贊助。