你的位置:首页 > ASP.net教程

[ASP.net教程]dataset数据导出到Excel


1、将数据写入HTTP输出流/这样子导出以后的数据全在一行中

public void CreateExcel(DataSet ds, string FileName)  {    HttpResponse resp;    resp = Page.Response;    resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");    resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);    string colHeaders = "", ls_item = "";    //定义表对象与行对象,同时用DataSet对其值进行初始化     DataTable dt = ds.Tables[0];    DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的    int i = 0;    int cl = dt.Columns.Count;    //取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符     for (i = 0; i < cl; i++)    {      if (i == (cl - 1))//最后一列,加/n      {        colHeaders += dt.Columns[i].Caption.ToString() + "/n";      }      else      {        colHeaders += dt.Columns[i].Caption.ToString() + "/t";      }    }    resp.Write(colHeaders);    //向HTTP输出流中写入取得的数据信息     //逐行处理数据      foreach (DataRow row in myRow)    {      //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据         for (i = 0; i < cl; i++)      {        if (i == (cl - 1))//最后一列,加/n        {          ls_item += row[i].ToString() + "/n";        }        else        {          ls_item += row[i].ToString() + "/t";        }      }      resp.Write(ls_item);      ls_item = "";    }    resp.End();  }

2、打开一个excel将数据逐行写入

需要添加两个com引用

Microsoft Office 15.0 Object Library

Microsoft Excel 15.0 Object Library

 

public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)  {    DataTable dataTable = dataSet.Tables[0];    int rowNumber = dataTable.Rows.Count;    int columnNumber = dataTable.Columns.Count;     if (rowNumber == 0)    {      //MessageBox.Show("没有任何数据可以导入到Excel文件!");      return false;     }    else    {      Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();      excel.Application.Workbooks.Add(true);      excel.Visible = isShowExcle;//是否打开该Excel文件        for (int c = 0; c < rowNumber; c++)       {         for (int j = 0; j < columnNumber; j++)         {           excel.Cells[c + 1, j + 1] = dataTable.Rows[c].ItemArray[j];         }       }       return true;     }  }