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#法式設計有所贊助。