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; } }
原标题:dataset数据导出到Excel
关键词:DataSet