数据导出Excel

1.从excel直接读入数据库

insert into t_test ( 字段 )

select 字段

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\test.xls";
User ID=Admin;Password=;
Extended properties=Excel 8.0')...[sheet1$]

2.从数据库直接写入excel


exec master..xp_cmdshell ' bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\test.xls -c -S"soa" -U"sa" -P"sa" '   注意参数的大小写,另外这种方法写入数据

的时候没有标题

3.从DataTable导出到excel

  StringWriter stringWriter = new StringWriter();
   HtmlTextWriter htmlWriter = new HtmlTextWriter( stringWriter );
   DataGrid excel = new DataGrid();
   System.Web.UI.WebControls.TableItemStyle AlternatingStyle = new TableItemStyle();
   System.Web.UI.WebControls.TableItemStyle headerStyle = new TableItemStyle();
   System.Web.UI.WebControls.TableItemStyle itemStyle = new TableItemStyle();
   AlternatingStyle.BackColor = System.Drawing.Color.LightGray;
   headerStyle.BackColor =System.Drawing.Color.LightGray;
   headerStyle.Font.Bold = true;
   headerStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
   itemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;;

   excel.AlternatingItemStyle.MergeWith(AlternatingStyle);
   excel.HeaderStyle.MergeWith(headerStyle);
   excel.ItemStyle.MergeWith(itemStyle);
   excel.GridLines = GridLines.Both;
   excel.HeaderStyle.Font.Bold = true;
   excel.DataSource = dt.DefaultView;   //输出DataTable的内容
   excel.DataBind();
   excel.RenderControl(htmlWriter);
 
   string filestr = "d:\\data\\"+filePath;  //filePath是文件的路径
   int pos = filestr.LastIndexOf( "\\");
   string file = filestr.Substring(0,pos);
   if( !Directory.Exists( file ) )
   {
    Directory.CreateDirectory(file);
   }
   System.IO.StreamWriter sw = new StreamWriter(filestr);
   sw.Write(stringWriter.ToString());
   sw.Close();

4 将DataGrid中的数据导入Excel中,并显示Excel应用程序
  /// <summary>
  /// 将DataGrid中的数据导入Excel中,并显示Excel应用程序,
  /// 注意调用该方法必须有安装Excel 2000应用程序,并且假定DataGrid中绑定的是一DataSet
  /// </summary>
  /// <param name="grid"></param>
  /// <param name="ReportTitle"></param>
  public static void ExportDataGridToExcel(DataGrid grid, string ReportTitle)
  {
   DataTable myTable = ((DataSet) grid.DataSource).Tables[0];

   try
   {
    Excel.Application xlApp = new Excel.ApplicationClass();

    int rowIndex;
    int colIndex;

    rowIndex = 2;
    colIndex = 0;

    Excel.Workbook xlBook = xlApp.Workbooks.Add(true);


    if (grid.TableStyles.Count > 0)
    {
     Excel.Range range = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, grid.TableStyles[0].GridColumnStyles.Count]);
     range.MergeCells = true;
     xlApp.ActiveCell.FormulaR1C1 = ReportTitle;
     xlApp.ActiveCell.Font.Size = 18;
     xlApp.ActiveCell.Font.Bold = true;

     foreach (DataGridColumnStyle colu in grid.TableStyles[0].GridColumnStyles)
     {
      colIndex = colIndex + 1;
      xlApp.Cells[2, colIndex] = colu.HeaderText;
     }

     //得到的表所有行,赋值给单元格

     for (int row = 0; row < myTable.Rows.Count; row++)
     {
      rowIndex = rowIndex + 1;
      colIndex = 0;
      for (int col = 0; col < grid.TableStyles[0].GridColumnStyles.Count; col++)
      {
       colIndex = colIndex + 1;
       xlApp.Cells[rowIndex, colIndex] = grid[row, col].ToString();
      }
     }
    }
    else
    {
     Excel.Range range = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, myTable.Columns.Count]);
     range.MergeCells = true;
     xlApp.ActiveCell.FormulaR1C1 = ReportTitle;
     xlApp.ActiveCell.Font.Size = 18;
     xlApp.ActiveCell.Font.Bold = true;

     //将表中的栏位名称填到Excel的第一行

     foreach (DataColumn Col in myTable.Columns)
     {
      colIndex = colIndex + 1;
      xlApp.Cells[2, colIndex] = Col.ColumnName;
     }

     //得到的表所有行,赋值给单元格

     for (int row = 0; row < myTable.Rows.Count; row++)
     {
      rowIndex = rowIndex + 1;
      colIndex = 0;
      for (int col = 0; col < myTable.Columns.Count; col++)
      {
       colIndex = colIndex + 1;
       xlApp.Cells[rowIndex, colIndex] = grid[row, col].ToString();
      }
     }
    }


    xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colIndex]).Font.Bold = true;
    xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[rowIndex, colIndex]).Borders.LineStyle = 1;

    xlApp.Cells.EntireColumn.AutoFit();
    xlApp.Cells.VerticalAlignment = Excel.Constants.xlCenter;
    xlApp.Cells.HorizontalAlignment = Excel.Constants.xlCenter;


    xlApp.Visible = true;
   }
   catch (Exception e)
   {
    throw e;
   }
  }

非有希望才坚持,坚持才会有希望
原文地址:https://www.cnblogs.com/eugenewu0808/p/ExportToExcel.html