程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成將DataTable內容輸入到Excel表格的辦法

C#完成將DataTable內容輸入到Excel表格的辦法

編輯:C#入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved