C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
本文實例講述了C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法。分享給大家供大家參考。具體如下:
1.關(guān)于本文
本文描述了一個函數(shù)(SaveToExcel),該函數(shù)可以將DataTable數(shù)據(jù)內(nèi)的數(shù)據(jù)輸出到Excel表格中
2.相關(guān)說明
1)本文中使用這個函數(shù)將一個DataTable中的內(nèi)容輸出到路徑名為addr的目錄下:
2)這個函數(shù)需要引用Microsoft.Office.Interop.Excel命名空間
需要添加引用:Microsoft Excel 14.0 Object Library
并在程序的最上方添加:
3)文程序在窗體的保存按鈕(btnSave)單擊事件中調(diào)用了函數(shù)SaveToExcel:
//按鈕:將數(shù)據(jù)保存到Excel表格中 private void btnSave_Click(object sender, EventArgs e) { SaveToExcel(txtAddress.Text, (DataTable)dgvTable4Output.DataSource); }
3.程序界面
4.程序代碼
Load函數(shù)部分:設(shè)置數(shù)據(jù)源
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單擊事件部分:調(diào)用函數(shù),將數(shù)據(jù)源存儲到Excel表格中
//按鈕:將數(shù)據(jù)保存到Excel表格中 private void btnSave_Click(object sender, EventArgs e) { SaveToExcel(txtAddress.Text, (DataTable)dgvTable4Output.DataSource); }
函數(shù)SaveToExcel部分:
/// <summary> /// 將數(shù)據(jù)表保存到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]的寫法,前面的數(shù)字是列,后面的數(shù)字是行! // * Excel中的行、列都是從1開始的,而不是0 //1.制作一個新的Excel文檔實例 Excel::Application xlsApp = new Excel::Application(); xlsApp.Workbooks.Add(true); /* 示例輸入:需要注意Excel里數(shù)組以1為起始(而不是0) * for (int i = 1; i < 10; i++) * { * for (int j = 1; j < 10; j++) * { * xlsApp.Cells[i][j] = "-"; * } * } */ //2.設(shè)置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("列數(shù)過多"); Excel::Range range = xlsApp.get_Range("A1", temp + "1"); range.ClearContents(); //清空要合并的區(qū)域 range.MergeCells = true; //合并單元格 //4.填寫第一行:表名,對應(yīng)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(); //清空要合并的區(qū)域 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;//居中 //設(shè)置顏色 range = xlsApp.get_Range("A3", temp + "3"); range.Interior.ColorIndex = 33; //8.填寫DataTable中的數(shù)據(jù) 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#程序設(shè)計有所幫助。
- C#如何將DataTable導(dǎo)出到Excel解決方案
- C#操作EXCEL DataTable轉(zhuǎn)換的實例代碼
- C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet
- C#使用Datatable導(dǎo)出Excel
- C#中DataGridView導(dǎo)出Excel的兩種方法
- C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable
- C#把DataTable導(dǎo)出為Excel文件
- C#實現(xiàn)讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable
- C#中ExcelDataReader的具體使用
相關(guān)文章
c# 動態(tài)加載dll文件,并實現(xiàn)調(diào)用其中的簡單方法
下面小編就為大家?guī)硪黄猚# 動態(tài)加載dll文件,并實現(xiàn)調(diào)用其中的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01