zoukankan      html  css  js  c++  java
  • 数据导出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;
       }
      }

    非有希望才坚持,坚持才会有希望
  • 相关阅读:
    [JZOJ 5788] 餐馆
    [JZOJ 5778] 没有硝烟的战争
    problems_scala
    好迷茫,好迷茫啊
    公布下我的数据库操作层
    关于数据库大并发量(未完成)
    关于http协议头
    管理心得体会
    数据库表分区
    公共的Json操作类
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/ExportToExcel.html
Copyright © 2011-2022 走看看