求 数据导入到EXCEL的原理,有思路也可以,一定给分。 求 数据导入到EXCEL的原理,有思路也可以,一定给分。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有好几种方式其中有一种就是引用Execl 的dll利用dataSet导出就行了还有一种,先弄一个xml的模板,写好对应位置,就按xml导出 1、读欲导出数据到dataset2、建xls表,建立连接3、建立表结构4、逐行读取dataset中的数据,逐行插入新建的Excel;5、结素 转自http://www.cnblogs.com/ringwang/archive/2008/01/10/1033429.htmlasp.net数据导出到Excel (从网络摘操) 一、无格式的导出 就是导出时没有任何格式,完全对文件写入,这个比较难看,但是实用。 /**//// <summary> /// 该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据; /// </summary> /// <param name="dt">导出的数据源</param> /// <param name="w">文件流</param> public void ExportExcel(DataTable dt, System.IO.StreamWriter w) { //HttpResponse resp; //resp = Page.Response; //resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); string colHeaders = "", ls_item = ""; //定义表对象与行对象,同时用DataSet对其值进行初始化 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); w.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"; } } w.Write(ls_item); ls_item = ""; } //resp.End(); w.Flush(); w.Close(); }二、直接从Gridview里导出 这种导出是所见既所得的方式,就是显示在gridview里是什么样导出就是什么样了,这个导出就好看多了,谢谢~!@ this.Panel1.Visible = false; Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; string filename = "Task"+System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString()+".xls"; Response.AppendHeader("Content-Disposition", "attachment;filename="+filename); // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!! Response.ContentEncoding = System.Text.Encoding.UTF7; Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); this.GridView1.RenderControl(oHtmlTextWriter); //读取数据了 Response.Output.Write(oStringWriter.ToString()); Response.Flush(); Response.End(); this.Panel1.Visible = true; 由于ReaderControl方法会重调客户端的一个方法验证,如果不重载的话会报错 public override void VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); } 放在服务器直接导出我们遇到一些小问题,没法跳过去,所以后来就先把数据读到Gridview中,再从Gridview中导到Excel,这个网上有很多源码可以用,楼主如果觉得此法可行的话可以在网上找到相应代码实现的 顶一下,楼上说了好多方法了。.net导出excel还是比较简单的。 ie6下载时候出现 unkown type 递归 页面部分刷新,要刷新的部分来自JavaScript 并不包含XX的定义 难道是存储过程参数不对吗? 一个简单问题 功能:縱向調整的時候,DataGrid的Header不動,橫向調整的時候,DataGrid的Header隨之動@@@@@@@@@@@@@ 询问下一个管理系统的价格 如何定义动态生成单元的css? *****什么是IIS?请高手指点迷经。***** 特向csdn好手請教報表打印問題 谁有 HTML <==> MHT 的代码。。。。。
其中有一种就是引用Execl 的dll
利用dataSet导出就行了还有一种,先弄一个xml的模板,写好对应位置,就按xml导出
2、建xls表,建立连接
3、建立表结构
4、逐行读取dataset中的数据,逐行插入新建的Excel;
5、结素
一、无格式的导出
就是导出时没有任何格式,完全对文件写入,这个比较难看,但是实用。 /**//// <summary>
/// 该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;
/// </summary>
/// <param name="dt">导出的数据源</param>
/// <param name="w">文件流</param>
public void ExportExcel(DataTable dt, System.IO.StreamWriter w)
{
//HttpResponse resp;
//resp = Page.Response;
//resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = ""; //定义表对象与行对象,同时用DataSet对其值进行初始化
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);
w.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";
} }
w.Write(ls_item);
ls_item = ""; }
//resp.End();
w.Flush();
w.Close();
}
二、直接从Gridview里导出
这种导出是所见既所得的方式,就是显示在gridview里是什么样导出就是什么样了,这个导出就好看多了,谢谢~!@
this.Panel1.Visible = false;
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
string filename = "Task"+System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString()+".xls";
Response.AppendHeader("Content-Disposition", "attachment;filename="+filename);
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter); //读取数据了
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
this.Panel1.Visible = true;
由于ReaderControl方法会重调客户端的一个方法验证,如果不重载的话会报错
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}