asp.net SQL数据导出到EXCEL中

ashiy 2009-02-11 08:18:53

//该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;
public void ExportExcel(DataTable dt, StreamWriter w)
{
try
{
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(dt.Columns[i]);
w.Write(' ');
}
w.Write(" ");

object[] values = new object[dt.Columns.Count];
foreach (DataRow dr in dt.Rows)
{
values = dr.ItemArray;
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(values[i]);
w.Write(' ');
}
w.Write(" ");
}
w.Flush();
w.Close();
}
catch
{
w.Close();
}
}


这是我找的一段SQL到EXCEL的代码片断,public void ExportExcel( DataTable dt , StreamWriter w )
这两个参数,dt我会写,w怎么写呢,
这个过程怎么调用呢,我菜鸟,希望高手指点一二
...全文
490 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pdsnet 2009-02-12
  • 打赏
  • 举报
回复
   CreateExcel(ds, "正在处理订单信息表.xls");

public void CreateExcel(DataSet ds, string FileName)
{
HttpResponse resp;
resp = Page.Response;
Response.Charset = "";
Response.Buffer = true;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

resp.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlPathEncode(FileName));

string colHeaders = "", ls_item = "";
int i = 0;

DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select("");

for (i = 0; i < dt.Columns.Count - 1; i++)
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
colHeaders += dt.Columns[i].Caption.ToString() + "\n";

resp.Write(colHeaders);

foreach (DataRow row in myRow)
{

for (i = 0; i < dt.Columns.Count - 1; i++)
ls_item += row[i].ToString() + "\t";
ls_item += row[i].ToString() + "\n";

resp.Write(ls_item);
ls_item = "";
}

resp.End();

}
}


用这个 ..
ZKM_ZHANG 2009-02-12
  • 打赏
  • 举报
回复
jf
xiaya1986cv 2009-02-12
  • 打赏
  • 举报
回复
你用utf7不要用改变gb2312
金大哈 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 flypigarmy 的回复:]
StreamWriter w = new StreamWriter(@"c:\e.xls");

别忘了之前using System.IO;
[/Quote]

正解

不过我导出的数据 有乱码


为何

malin2670372 2009-02-12
  • 打赏
  • 举报
回复
记录下....
_NET2004 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 flypigarmy 的回复:]
StreamWriter w = new StreamWriter(@"c:\e.xls");

别忘了之前using System.IO;
[/Quote]

对的
FF__ 2009-02-12
  • 打赏
  • 举报
回复
StreamWriter w = new StreamWriter(@"c:\e.xls");

别忘了之前using System.IO;
dotnetsong 2009-02-12
  • 打赏
  • 举报
回复
声明一个这种类型的参数传过来, 就好了吧
fuzijing 2009-02-12
  • 打赏
  • 举报
回复
...
xingyun 2009-02-12
  • 打赏
  • 举报
回复
乱码问题改成
StreamWriter sw = new StreamWriter("d:\\test.xls",false,System.Text.Encoding.Default);

数据都在第一个单元格的问题,要修正为下面语句
foreach (DataRow dr in dt.Rows)
{
values = dr.ItemArray;
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write(values[i]);
w.Write('\t'); //修改语句
}
w.Write("\r\n"); //修改语句
}
以上代码均调试通过。

另外不推荐你这样导出excel,因为虽然扩展名是xls,其实内容还是text文件,Excel2007打开时要询问格式问题,而且表格无法拥有丰富的格式。
建议使用微软Office中间件——SOAOffice,语法简洁、功能强大,更加SQL动态产生图文并茂的excel,并且能够直接显示在浏览器里
FF__ 2009-02-12
  • 打赏
  • 举报
回复
StreamWriter w = new StreamWriter(path, false, Encoding.GetEncoding("GB2312"));//其中false是表示文件存在就重新创建文件,如果为true则追加到文件末尾。
8楼的是用在WEB应用程序上的
你要分单元格?我没做过,你可以用数据源连接到excel文件,我这里有个现成的读EXCEL的,要下班啦,要不回去给你写一个
public static IList<xxxx> LoadFromFile(string Path)
{
IList<xxxx> xs = new List<xxxxx>();

string connString;
if (Path.Substring(Path.LastIndexOf('.')) == ".xls")//excel2003以下
connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
else//excel2007以上至最后一个能使用ACE的兼容版本
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
string strSQL = "select * from [";

OleDbConnection conn = new OleDbConnection(connString);
try
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables_Info, null);
foreach (DataRow row in dt.Rows)
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL + row[2] + "]";
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
xxxx x = new xxxx();

x.???=dr[0];
x.???=dr[1];
......

xs.Add(dr[0]);
}
}
}
}

catch (Exception ex)
{
}
finally
{
conn.Close();
}
return teachers;
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧