C#将不规则表格数据导出到Excel文件的代码

学习闲暇时间,将做工程过程较好的一些内容做个收藏,下面内容是关于C#将不规则表格数据导出到Excel文件的内容,应该是对小伙伴们有所用。

public void OutputExcel(DataView dv,string str)

{

  GC.Collect();

  int rowIndex=4;

  int colIndex=1;

  _Workbook xBk;

  _Worksheet xSt;

  excel= new ApplicationClass();


  xBk = excel.Workbooks.Add(true);


  xSt = (_Worksheet)xBk.ActiveSheet;

  foreach(DataColumn col in dv.Table.Columns)

  {

    colIndex++;

    excel.Cells[4,colIndex] = col.ColumnName;

  }

  foreach(DataRowView row in dv)

  {

    rowIndex ++;

    colIndex = 1;

    foreach(DataColumn col in dv.Table.Columns)

    {

    colIndex ++;

    if(col.DataType == System.Type.GetType("System.DateTime"))

    {

      excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");

    }

    else

      if(col.DataType == System.Type.GetType("System.String"))

    {

      excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();

    }

    else

    {

      excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();

    }

    }

  }

  int rowSum = rowIndex + 1;

  int colSum = 2;

  excel.Cells[rowSum,2] = "合计";

  xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;

  xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();

  excel.Cells[2,2] = str;

  xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;

  xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;

  xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();

  xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();

  xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();

  xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;

  xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;

  excel.Visible=true;

  xBk.SaveCopyAs(Server.MapPath(".")+""+this.xlfile.Text+".xls");

  ds = null;

            xBk.Close(false, null,null);


            excel.Quit();

            System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);

            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);

            xBk = null;

            excel = null;

  xSt = null;

            GC.Collect();

  string path = Server.MapPath(this.xlfile.Text+".xls");

  System.IO.FileInfo file = new System.IO.FileInfo(path);

  Response.Clear();

  Response.Charset="GB2312";

  Response.ContentEncoding=System.Text.Encoding.UTF8;

  Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));

  Response.AddHeader("Content-Length", file.Length.ToString());


  Response.ContentType = "application/ms-excel";


  Response.WriteFile(file.FullName);


  Response.End();

}




上面的方面,均将要导出的execl数据,直接给浏览器输出文件流,下面的方法是首先将其存到服务器的某个文件夹中,然后把文件发送到客户端。这样可以持久的把导出的文件存起来,以便实现其它功能。

你可能感兴趣的:(C#将不规则表格数据导出到Excel文件的代码)