由DataSet导出生成excel的几种方法

1、当dataset中包含了html等特殊字符用这个处理

public void CreateExcel2(DataSet ds)
{
//创建一个excel application
Excel.Application xls_exp=null;
int rowindex=1;
int colindex=0;

//创建一个workbook,一个worksheet
Excel._Workbook xls_book=null;
Excel._Worksheet xls_sheet=null;
try
{
xls_exp = new Excel.ApplicationClass();
xls_book = xls_exp.Workbooks.Add(true);
xls_sheet = (Excel._Worksheet)xls_book.ActiveSheet;
//取得数据
//DataTable aa=GetData();
//将所得到的表的列名,赋值给单元格
foreach (DataColumn col in ds.Tables[0].Columns)
{
colindex++;

xls_exp.Cells[1, colindex] = col.ColumnName;
//水平对齐
xls_sheet.get_Range(xls_exp.Cells[1, colindex], xls_exp.Cells[1, colindex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
//垂直对齐
xls_sheet.get_Range(xls_exp.Cells[1, colindex], xls_exp.Cells[1, colindex]).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

//行高、列宽自适应
//xls_sheet.Cells.Rows.AutoFill();
//xls_sheet.Cells.Columns.AutoFill();
}
//同样方法处理数据
foreach (DataRow row in ds.Tables[0].Rows)
{
rowindex++;
colindex = 0;

foreach (DataColumn col in ds.Tables[0].Columns)
{
colindex++;
switch (row[col.ColumnName].GetType().ToString())
{
//字符
case ("System.String"):

//数字格式设置为文本
xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).NumberFormatLocal = "@";

//水平对齐
xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
//垂直对齐
xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
break;
//日期
case ("System.DateTime"):
//数字格式设置为yyyy-mm-dd hh:mm:ss日期
xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).NumberFormatLocal = "YYYY-MM-DD HH:MM:SS";
break;
}
//给cell赋值
xls_exp.Cells[rowindex, colindex] = row[col.ColumnName];

}
}
//不可见,即后台处理
xls_exp.Visible = true;
}
catch (Exception err)
{
//MessageBox.show(err.Message);
Page.ClientScript.RegisterStartupScript(this.GetType(), "mes", "alert(‘"+err.Message+"‘);", true);
}
}

2.

 public void CreateExcel(DataSet ds)
{
HttpResponse resp = null;
resp = Page.Response;

resp.Clear();
resp.Buffer = true;

resp.Charset = "GB2312";

resp.ContentType = "application/ms-excel";
resp.AppendHeader("Content-Disposition", "attachment;filename=BleGgoods.xls" );

resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

this.EnableViewState = false;

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.Flush();
resp.End();
}

3.

 public void CreateCsv(DataSet ds)
{
string output=string.Empty;
ArrayList myOutput = new ArrayList();
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
output = "\t" + ds.Tables[0].Rows[i][0].ToString() + "," + ds.Tables[0].Rows[i][1].ToString()+",";
output += ds.Tables[0].Rows[i][2].ToString() + "," + ds.Tables[0].Rows[i][3].ToString()+",";
output += ds.Tables[0].Rows[i][4].ToString() + "," + ds.Tables[0].Rows[i][5].ToString() + ",";
output += ds.Tables[0].Rows[i][6].ToString() + "," + ds.Tables[0].Rows[i][7].ToString() + ",";
output += ds.Tables[0].Rows[i][8].ToString();

myOutput.Add(output);
}

Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.Charset = "GB2312";

Response.AppendHeader("Content-Disposition", "attachment;filename=BleGoods.csv");

Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文

Response.ContentType = "text/csv";//设置输出文件类型为text文件。
this.EnableViewState = false;
System.Collections.IEnumerator myEnumerator = myOutput.GetEnumerator();
while (myEnumerator.MoveNext())
Response.Write(myEnumerator.Current.ToString());
Response.Flush();
Response.End();
}

}
时间: 2024-09-29 15:41:06

由DataSet导出生成excel的几种方法的相关文章

delphi 导出到excel的7种方法

本文来自 爱好者8888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kpc2000/article/details/17066823?utm_source=copy =================================================================================================== 第一种方法delphi 快速导出excel uses ComObj,clipbrd; funct

C#将DataTable数据导出到EXCEL的两种方法

1.在非服务器控件的页面导出数据,需要借助一张temp空页面post回后台的数据. 前台:window.location.href = "../Temp.aspx"; 后台: try{ dtSource = Session["MyDataTable"] //假设数据在Session中 if (dtSource == null || dtSource.Rows.Count == 0)            {                return;       

Mysql查询结果导出为Excel的几种方法

具体原文找不到了,此篇是借鉴门户的一篇文章 方法一:查询语句直接输出语法格式: Example: select * into outfile '/data/var-3307/catid.xls' from help_cat where 1 order by cat_id desc limit 0,20; select * into outfile '导出文件存放目录' from 表面和查询条件等信息! 请注意权限问题,如果实在不行,放在/tmp 目录下 方法二:在shell命令行下把Excel以

Delphi 导出数据至Excel的7种方法【转】

转自:http://blog.csdn.net/zang141588761/article/details/52275948 一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :string; a

delphi导出数据至Excel的七种方法及比较

一;delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean;const      xlNormal=-4143;var    y     :  integer;    tsList :  TStringList;    s,filename  :string;    aSheet  :Variant;    excel :OleVariant;   

.NET导出Excel的四种方法及评测

.NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspose.Cells四个市面上常见的库,各完成一个导出Excel示例.然后对其代码风格和性能做一个横向比较.最后我将说出我自己的感想. 文中所有的示例代码可以在这里下载: https://github.com/sdcb/blog-data/tree/master/2019/20190824-dotnet

如何将数据库的表导出生成Excel?

1.如何通过元数据拿到数据库的信息? 2.如何用Java生成Excel表? 3.将数据库中的表导出生成Excel案例 如何通过元数据拿到数据库的信息 元数据:描述数据的数据 Java中使用元数据的两个方法 DatabaseMetaData 通过连接可以拿到的信息:数据库软件,所有数据库名,所有数据库里面的表名,描述数据库的元数据 ResultSetMetaData 拿到的表结构信息:获得表的列数目 类型和属性 ,描述数据库表的元数据 DatabaseMetaData 的使用学习 @Test//

PHP导出生成Excel文件

PHP导出生成Excel首先需要下载安装office扩展 可以自行下载,也可以通过composer下载安装 个人比较建议后者 代码很简单  不废话直接上代码 /** * @param $file_name String 文件名称 * @param $title String 标题 * @param $order String 中文的表格序以逗号方式连接 * @param $data array 数据集 * @param $data_order String 数据集合key以逗号的方式连接 */

Json数据导出生成Excel

最近在做一个导入导出Excel的功能,导出其他类型的文件都比较熟悉,但是导入跟导出一个Excel还是稍微特殊点.根据这次的经验,写了个导出的小样例. 总体思路就是json数据的key,value跟Excel的行列转换,还有就是解决数据在Excel表格中存放的位置,区域问题. 这里要用到的两个小插件,一个是xslx.js,一个是FileSaver.js,前者是来处理生成Excel的,后者是用来把文件下载保存到本地的. 下载地址: https://github.com/eligrey/FileSav