导出从数据库中查询到的所有的数据到Excel中

来源:互联网 发布:九世犹可以复仇乎 编辑:程序博客网 时间:2024/05/16 07:52

  

  1. public void printAll(System.Data.DataTable dt)   
  2. {   
  3.     //导出到execl   
  4.     try  
  5.     {   
  6.         //没有数据的话就不往下执行   
  7.         if (dt.Rows.Count == 0)   
  8.             return;   
  9.         //实例化一个Excel.Application对象   
  10.         Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();   
  11.   
  12.         //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错  
  13.         excel.Application.Workbooks.Add(true);   
  14.   
  15.         //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写  
  16.         excel.Visible = false;   
  17.         //生成Excel中列头名称   
  18.         for (int i = 0; i < dt.Columns.Count; i++)   
  19.         {   
  20.             excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;//输出DataGridView列头名  
  21.         }   
  22.   
  23.         //把DataGridView当前页的数据保存在Excel中   
  24.         if (dt.Rows.Count > 0)   
  25.         {   
  26.             for (int i = 0; i < dt.Rows.Count; i++)//控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完  
  27.             {   
  28.                 for (int j = 0; j < dt.Columns.Count; j++)//控制Excel中列,左右的距离,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完  
  29.                 {   
  30.                     string str = dt.Rows[i][j].ToString();   
  31.                     excel.Cells[i + 2, j + 1] = "'" + str;//i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"'" +是以string形式保存,所以遇到数字不会转成16进制  
  32.                 }   
  33.             }   
  34.         }   
  35.         //设置禁止弹出保存和覆盖的询问提示框   
  36.         excel.DisplayAlerts = false;   
  37.         excel.AlertBeforeOverwriting = false;   
  38.   
  39.         //保存工作簿,值为false会报错   
  40.         excel.Application.Workbooks.Add(true).Save();   
  41.         //保存excel文件   
  42.         excel.Save("D:" + "\\KKHMD.xls");   
  43.   
  44.         //确保Excel进程关闭   
  45.         excel.Quit();   
  46.         excel = null;   
  47.   
  48.     }   
  49.     catch (Exception ex)   
  50.     {   
  51.         MessageBox.Show(ex.Message, "错误提示");   
  52.     }   
  53. }   
  54. private void button1_Click(object sender, EventArgs e)   
  55. {   
  56.     printAll(dt);   
  57. }  
  58.  
  59. #endregion  
0 0