(原创)datagrid数据导出到excel文件给客户端下载的几种方法

方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载

优点:
1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。
2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。
3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。

实现方法:
 
  SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   DataTable dt=ds.Tables["table1"];
   string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
   FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
   StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
   sw.WriteLine("自动编号,姓名,年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
   }
   sw.Close();
   Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
   Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
   Response.WriteFile(name); // 把文件流发送到客户端
   Response.End();

方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流

优点:
1、随时生成,不需要占用资源
2、可以结合身份认证
3、同样利于数据交换

实现方法:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   DataTable dt=ds.Tables["table1"];
   StringWriter sw=new StringWriter();
   sw.WriteLine("自动编号,姓名,年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
   }
   sw.Close();
   Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
   Response.ContentType = "application/ms-excel";
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   Response.Write(sw);
   Response.End();

对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号

代码修改如下:
sw.WriteLine("自动编号\t姓名\t年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]);
   }
另外,修改输出的文件扩展名为xls即可。


方法三:从datagrid导出html代码,生成excel文件,给客户端下载

优点:
1、有固定的格式,样子好看(datagrid的样子)

局限性:
1、不适合数据交换,里面有html代码,比较乱,没有固定格式
2、datagrid不能有分页、排序等,否则出错

实现方法:
Response.Clear();
   Response.Buffer= false;
   Response.Charset="GB2312";
   Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");    Response.ContentType = "application/ms-excel";    this.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   this.DataGrid1.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();

在这里说明一点:有的网友反映代码出现“没有dr["id"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。

还有就是如果文件名需要中文的话,这么修改Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode("中文",System.Text.Encoding.UTF8)+".xls");
posted @ 2005-03-25 13:16 lovecherry 阅读(46032) 评论(105)  编辑 收藏 网摘 所属分类: webform

评论共2页: 上一页 1 2 
  回复  引用    
#101楼2005-04-15 22:16 | 王春阳
我导出的有时出现乱码,有时不会出现,怎样解决!
  回复  引用  查看    
#102楼[楼主]2005-04-16 07:01 | lovecherry      
怎么样的情况出现乱码
  回复  引用    
#103楼2005-05-20 09:27 | fengzizai
各位有没有支持datagrid分页和排序的数据导出呢?但是还要求把所有分页中数据一次性导出到cvs或excel中
  回复  引用  查看    
#104楼[楼主]2005-05-20 09:28 | lovecherry      
建议直接从数据源导出
  回复  引用    
#105楼2005-06-16 18:00 | Kingeon
导出成文本时,怎么实现自动回车?
  回复  引用    
#106楼2005-06-17 13:38 | wpy
有没有直接用二进制写入excel的

  回复  引用    
#107楼2005-06-28 10:31 | 出现乱码
导出中文时出现乱码,如何解决,谢谢。
  回复  引用    
#108楼2005-07-22 15:20 | kk[未注册用户]
感谢搂主
  回复  引用    
#109楼2005-08-04 09:39 | 天天[未注册用户]
生成的csv文件未保存时,sheet名有错。即sheet名的前面会加上".csv"和设的sheet名一起显示在sheet名的位置上。
请问有遇到过相同情况的吗?要怎么样解决呢?

  回复  引用    
#110楼2005-08-08 16:40 | adolfty[未注册用户]
上面的那个导出还是有问题哦

如果我的数据库内的数据有超过10000000的数据量,而且网页上是采用的分页结构来显示的内容,当然当前导入的肯定是当前分页下的几条记录,那这样该怎么办呢

这个可是大问题哦

  回复  引用    
#111楼2005-08-11 17:24 | 雨花中的小皮鞋[未注册用户]
我测试时,它居然提示下载。ASPX文件,希望能解释

qq:524039682

  回复  引用    
#112楼2005-08-29 16:21 | lele[未注册用户]
方法二中中文存到EXCel中 变成了乱码 如何解决阿??谢谢
  回复  引用    
#113楼2005-08-29 16:53 | 蓝月亮[未注册用户]
DataGrid 导出Excel时,DataGrid里有一列CheckBox 就无法实现下载,如何解决
  回复  引用  查看    
#114楼[楼主]2005-08-29 17:36 | lovecherry      
lele :
Response.Charset="GB2312"; 试试

蓝月亮 :
建议直接从数据源导出或者做一个标准的datagrid导出下载(隐藏)

  回复  引用    
#115楼2005-08-31 12:14 | 蓝月亮[未注册用户]
我的DataGrid格式:
用户名 1 2 3 4 5
王 B A D E F
李 B A D E F

表结构:
用户名, 用户ID, 数据列, 日期
王1 user1 B 2005-02-01
王2 user2 B 2005-02-02
王3 user3 B 2005-02-03
DataGrid只显示用户名和数据列的数据,我这楼主的方法导出后如何再把数据导回到sql数据库中.

  回复  引用    
#116楼2005-09-01 15:10 | mengshuai[未注册用户]
To 雨花中的小皮鞋 :
你的IE是不是装了什么插件?搜狐直通车之类的,如果是,卸掉就好了
qq:29655867

  回复  引用    
#117楼2005-09-02 16:44 | 金鑫[未注册用户]
前面是datagrid的绑定,我就不多写了

Response.ContentType = "application/vnd.ms-excel";

Response.Charset = "";

EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
DataGrid1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();

运行后发现excel第一行全是数据库中的列名,例如: buyname,buyno等等
我想在不改变数据库的前提下,把excel第一行全改位中文(在DataGrid里所有的列名已经是中文)
我该怎么做


  回复  引用    
#118楼2005-09-13 15:11 | 非[未注册用户]
解决乱码 ,用utf-7
  回复  引用    
#119楼2005-09-27 10:06 | jsriping[未注册用户]
在web.config文件中设置了路径,但是运行后提示路径不支持,不知道是什么问题。。。
  回复  引用    
#120楼2005-10-11 16:50 | dgd[未注册用户]
dffd
  回复  引用    
#121楼2005-10-13 17:12 | hu[未注册用户]
vb.net 导出excel,用什么分隔符?
  回复  引用    
#122楼2005-10-27 15:09 | Lucy・Lu[未注册用户]
非常感谢楼主,感觉很实用,再次感谢中。。。
不过,就像前面有位师兄提出的,Excel中的Sheet名最好可以解决一下下,唯一的小遗憾。
不管怎样,还是非常谢谢楼主!!!

  回复  引用    
#123楼2005-11-17 16:44 | 李长明[未注册用户]
如果DataGrid是分页显示的,导出就会出错,正确的方法是什么呢? 谢谢!
  回复  引用  查看    
#124楼[楼主]2005-11-17 17:01 | lovecherry      
打开新窗口(包含所有记录的datagrid)导出
  回复  引用    
#125楼2005-11-18 13:29 | guofeng027[未注册用户]
为什么把代码转换为VB。NET的就会出错啊,没有数据显示,只有表头呢,求助

Dim con As New SqlConnection
con.ConnectionString = "server=.;uid=sa;pwd=;database=finance"
Dim ds As New DataSet
con.Open()
Dim sqlstr
sqlstr = "select * from note "
Dim da As SqlDataAdapter = New SqlDataAdapter(sqlstr, con)
da.Fill(ds, "table1")
Dim dt As New DataTable
dt = ds.Tables("table1")
Dim sw As New System.IO.StringWriter
sw.WriteLine("卡号,余额")
Dim dr As DataRow = dt.NewRow
sw.WriteLine(dr("cardid") + "," + dr("money"))
sw.Close()
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv")
Response.ContentType = "application/ms-excel"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
Response.Write(sw)
Response.End()

  回复  引用    
#126楼2005-11-18 16:16 | guofeng027[未注册用户]
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
}
怎么样才能将这句转换为VB。NET的语言啊,急!!!!
谢谢啦

  回复  引用    
#127楼2005-11-23 11:29 | lfcoolwind[未注册用户]
最好是COM组件实现这个功能

  回复  引用    
#128楼2005-12-06 14:29 | 白菜[未注册用户]
我用第二个方法导出EXCEL后,打开时会出现错误提示

“EXECL已经检测到***是SYLK文件,但不能将其加载。.......”

点击确定,可以打开,但是里面少了不少数据,比如日期全都没有

  回复  引用    
#129楼2005-12-26 20:45 | ding_0910[未注册用户]
VB下这样做
========================
Dim ds As DataSet = Me.CaseObj.GetCaseStat(strWhr)
Dim sw As New StringWriter
sw.WriteLine("投诉类别" + ControlChars.Tab + "发生日期" + ControlChars.Tab + "跟进日期" + ControlChars.Tab + "最终用户" + ControlChars.Tab + "联系方式" + ControlChars.Tab + "省市" + ControlChars.Tab + "产品型号" + ControlChars.Tab + "IMEI" + ControlChars.Tab + "跟进周期" + ControlChars.Tab + "维修中心" + ControlChars.Tab + "个案描述" + ControlChars.Tab + "解决方案" + ControlChars.Tab + "结束日期" + ControlChars.Tab + "回访人" + ControlChars.Tab + "责任判定" + ControlChars.Tab + "扣分" + ControlChars.Tab + "罚款" + ControlChars.Tab + "备注")
For Each dr As DataRow In ds.Tables(0).Rows
sw.WriteLine(dr("CaseKind_Name") & ControlChars.Tab & dr("Case_GetDate") & ControlChars.Tab & dr("Case_KeepDate") & ControlChars.Tab & dr("User_Name") & ControlChars.Tab & dr("User_Tel") & "\" & dr("User_Mobile") & ControlChars.Tab & dr("Addr") & ControlChars.Tab & dr("Product_Name") & ControlChars.Tab & "'" & dr("Bar_Code") & ControlChars.Tab & dr("KeepCycle") & ControlChars.Tab & dr("Org_Name") & ControlChars.Tab & _
Convert.ToString(dr("Case_Content")).Replace(ControlChars.Tab, "").Replace(ControlChars.CrLf, "") & ControlChars.Tab & Convert.ToString(dr("Case_Solution")).Replace(ControlChars.Tab, "").Replace(ControlChars.CrLf, "") & ControlChars.Tab & dr("Case_DealDate") & ControlChars.Tab & dr("Case_CheckMan") & ControlChars.Tab & Convert.ToString(dr("Case_JudgeContent")).Replace(ControlChars.Tab, "").Replace(ControlChars.CrLf, "") & ControlChars.Tab & "" & ControlChars.Tab & "" & ControlChars.Tab & "")
Next
sw.Close()
Response.AddHeader("Content-Disposition", "attachment; filename=" & System.Web.HttpUtility.UrlEncode("用户投诉统计表", System.Text.Encoding.UTF8) & ".xls")
Response.ContentType = "application/ms-excel"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
Response.Write(sw)
Response.End()

  回复  引用    
#130楼2006-01-06 13:58 | onz[未注册用户]
怎么样给没个单元格加上边框呀 !!
  回复  引用    
#131楼2006-01-06 14:06 | onz[未注册用户]
我用的是上面的方法导出没有问题了,可是我们的刁蛮的客户又提出了要给加上单元格边框,我用的是第三种方法,能在这个方法上完善吗,望各位不吝赐教!!!
  回复  引用  查看    
#132楼2006-01-26 14:40 | eFeng.Leung      
方法二:
error CS0122: 不可访问“System.IO.StreamWriter.StreamWriter()”,因为它受保护级别限制

  回复  引用  查看    
#133楼2006-02-19 12:00 | ASTAR Coming Now      
关于Excel导出有很多方法,
根据不同的项目可以采用不同的方法,
可以看看这里
http://www.cnblogs.com/king_astar/archive/2006/02/17/332785.html">http://www.cnblogs.com/king_astar/archive/2006/02/17/332785.html

  回复  引用    
#134楼2006-02-23 11:21 | doney[未注册用户]
在GridView 控件中怎么绑定阿

doneydongxiang@gmail.com

  回复  引用    
#135楼2006-02-23 18:33 | lrchen[未注册用户]
请问用第二种方法导出到excel中字体、粗细等能够在代码中更改吗?
  回复  引用    
#136楼2006-03-12 19:43 | QDuck123[未注册用户]
@lovecherry
使用第二种方法的话
导出的excel文件无法重新导入到数据库!
出现“文件不是期望的格式”的错误信息

  回复  引用    
#137楼2006-04-21 14:59 | mib23[未注册用户]
第二种方法为什么会弹出两次打开、保存的提示框?

谢谢!

  回复  引用    
#138楼2006-04-27 10:52 | 林冲[未注册用户]
请问一下,我的DataGrid控件里面有几个模列的按扭怎么导不出Excel,报错,楼主能否提供一个例子,

E_email:LZHANG4@gmail.com

  回复  引用    
#139楼2006-05-05 12:25 | XML[未注册用户]
我申请的空间是UNIX系统.用COM组件不知道怎么注册.
用到了这个,但生成EXECL文件时全部都在同一列!也就是没有做分隔了.用"\t"的话就直接输出\t.用","也是直接变成,,请问这个要怎么解决啊?

  回复  引用  查看    
#140楼2006-05-09 17:46 | 彻底玩转.NET      
感谢楼主,以前一直不知道怎么把EXCEL文件名写成中文的,呵呵
  回复  引用    
#141楼2006-05-16 13:48 | codeme[未注册用户]
导出文件 乱码问题
FileStream file;
StreamWriter sw;
file = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite);

sw = new StreamWriter(file,Encoding.GetEncoding("GB2312"));


  回复  引用    
#142楼2006-05-24 17:22 | lpj[未注册用户]
asdfas
  回复  引用    
#143楼2006-06-22 12:18 | David Dai[未注册用户]
如何同时将二个DataGrid的数据导出呢?谢谢

qingydai@gmail.com

  回复  引用  查看    
#144楼2006-06-22 12:29 | 彻底玩转.NET      
@David Dai

我用的方法是:
在页面中插入一个表格,并把它定义为服务器控件,
然后把你想要导出数据的那两个datagrid放在这个表格里,
把this.DataGrid1.RenderControl(oHtmlTextWriter); 这句话中的datagrid1改成表格的ID就可以了。





  回复  引用  查看    
#145楼2006-08-08 11:33 | 深夜醉猫      
^_^,不错,正好用上!!
  回复  引用    
#146楼2006-08-23 14:33 | EVA[未注册用户]
我用的是第二种方法,编译的时候没有错误,可是显示的时候出现了"未将对象引用设置到对象的实例。"

行 47: StringWriter sw=new StringWriter();
行 48: sw.WriteLine("自动编号\t姓名\t年龄");
行 49:
行 50: foreach(DataRow dr in dt.Rows)
行 51: {

行49出错,
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
还望知道的帮帮忙,刚刚工作,很多问题都不明白呢!
EMAIL:dhqcwsk@126.com

  回复  引用    
#147楼2006-09-29 11:53 | 風林火山[未注册用户]
將數據導出到Excel的時候,怎樣編碼才可以實現中文的簡體和繁體之間自動轉換啊。
  回复  引用    
#148楼2006-10-11 20:43 | lin[匿名][未注册用户]
请问,在windows应用程序中应该如何将DataGrid中的数据到处到Excel中?新手上路,谢谢!
  回复  引用    
#150楼2006-11-24 09:39 | 我是小菜鸟[未注册用户]
类型“DataGridLinkButton”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。
点击导出后报了这个错应该怎么修改啊?

  回复  引用    
#151楼2006-11-24 11:22 | ocean[匿名][未注册用户]
方法二问题:
如果用第二种方法,如果我的ds中本来就有\t,逗号,该怎么办?如何去除\t

  回复  引用    
#152楼2006-11-24 11:29 | ocean[匿名][未注册用户]
问个扩展开的问题:代码如下:
page_load()
{
if(!ispostback)
{
//生成table
//Session["DataSet"]
}
}

button_click()
{
DataSet ds=Session["DataSet"];
da.Fill(ds,"table1");
DataTable dt=ds.Tables["table1"];
StringWriter sw=new StringWriter();
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}

为什么导出后table能保持显示,但click事件里面什么也不做的话table就不能显示呢?找到最后发现是这句话的效果,谁能解释一下:
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv"); 为什么????????

  回复  引用    
#153楼2006-12-01 13:11 | sung[未注册用户]
记录多于65536条,怎么办?
  回复  引用    
#154楼2006-12-18 11:15 | 姬鼠[未注册用户]
我用的是第二种方法,编译的时候没有错误,可是显示的时候出现了"未将对象引用设置到对象的实例。"

行 47: StringWriter sw=new StringWriter();
行 48: sw.WriteLine("自动编号\t姓名\t年龄");
行 49:
行 50: foreach(DataRow dr in dt.Rows)
行 51: {

行49出错,
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
还望知道的帮帮忙,刚刚工作,很多问题都不明白呢
using System.IO;
加在网页最上面就可以拉

  回复  引用    
#155楼2006-12-18 16:36 | 大能猫[未注册用户]
小弟极其不赞同你的观点
这个和datagrid没有任何关系就是导入逗号分隔符而已和excel的格式定义也没有关系
各位还是用owc吧

  回复  引用    
#156楼2006-12-22 11:01 | berlin8600[未注册用户]
第二种方法比较灵活,
但是如果表头有合并单元格的情况应该如何处理呢?
比如想输出这样的表头
A B C D
1 北京 天津   黑龙江
2 哈尔滨 佳木斯
其中(A1,A2),(B1,B2),(C1,D1)为合并单元格
thanks

  回复  引用    
#157楼2007-01-10 15:16 | 王晓明[未注册用户]
用这种方法,DataGrid有分页就出错了,怎么办?
  回复  引用    
#158楼2007-02-03 10:23 | Jacky[未注册用户]
RList.AllowSorting = False
RList.AllowPaging = False
RList.SelectedIndex = -1
BindData()

Response.Clear()
Response.Buffer = True
Response.Charset = "big5"

Response.AppendHeader("Content-Disposition", "attachment;filename=Report.xls")
Response.ContentEncoding = System.Text.Encoding.GetEncoding("big5")
Response.ContentType = "application/ms-excel"
Me.EnableViewState = False

Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)

RList.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.End()

  回复  引用    
#159楼2007-02-08 14:01 | 老刘[未注册用户]
将datagrid的数据按datagrid格式输出为Excel没问题,但是客户提出要按他的格式输出数据,例如加上标题,把日期放在右上角,把制表人放在左下角,纸张规格为210*140等等,晕死,怎么办啊?各位大侠请指教!通宵在线等,controlit@sohu.com
  回复  引用    
#161楼2007-02-15 16:06 | liny[未注册用户]
开发时下载没有问题,但是部署好了下载就出现问题了
  回复  引用    
#162楼2007-03-08 16:27 | jason[未注册用户]
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。

源错误:


行 82: System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
行 83: System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
行 84: this.GridView1.RenderControl(oHtmlTextWriter);
行 85: Response.Write(oStringWriter.ToString());



  回复  引用    
#163楼2007-03-21 14:06 | 昌林[未注册用户]
把编码格式改成 utf-7 就好了!
  回复  引用    
#164楼2007-04-02 17:11 | xia[未注册用户]
我用第三种方法可以导出,但只能导出偶数行的记录,有高手知道可能会是什么原因吗?
  回复  引用    
#165楼2007-04-03 10:59 | xia[未注册用户]
我的问题解决了.是因为在gridview1_RowDataBound事件中给一列赋值的时候用了string.Format()方法,显示是正确,但导出来的数据只有原来的一半.改了以后就好了.
即把e.Row.Cells[10].Text = string.Format("<a href='{0}?id={1}');\">{2}</a>", "../NewPage.aspx", e.Row.Cells[0].Text, e.Row.Cells[10].Text);
改为:e.Row.Cells[10].Text = "<a href='../NewPage?id=" + e.Row.Cells[0].Text + "'>" + e.Row.Cells[10].Text + "</a>";
就OK了.不知有没有朋友遇到跟我一样的问题

  回复  引用    
#166楼2007-04-25 15:42 | 关日艮[未注册用户]
你可以在DataGrid里修改Cellpadding为1,修改Cellspacing为1,导出就有边框了.
  回复  引用    
#167楼2007-07-23 11:02 | 11111[未注册用户]
香港公司等离岸公司详细
【离岸公司概念综述】只要是在原国籍地以外注册成立的公司,一般可统称为海外离岸公司。非当地居民在香港注册公司、英属维尔京群岛、纽埃岛、塞舌尔群岛、巴哈马群岛、马拿马及开曼等这些岛国或地区注册的公司,都属于这一类别。 其中注册香港公司和注册BVI公司、等许多曾是英国的殖民地,在很大基础上保留了英国注册公司的法律体系和司法制度,当地政府又以法律手段制订并培育出一些特别宽松的经济区域,允许国际人士在其领土上成立国际贸易业务公司,对这类公司没有任何税收,只收取少量的年度管理费,同时,所有的国际大银行都承认这类公司,为其设立银行帐号及财务运作提供方便。通常情况下,这类地区和国家与世界发达国家有很好的贸易关系。无论在上述任何一个国家或地区注册的海外离岸公司,均具有高度的保密性,减轻税务负担,无外汇管制三大特点,因而吸引很多商家与投资者选择海外离岸公司的发展模式。比较具有代表性的就是【注册香港公司的优点】
1、注册香港公司发展跨国业务,提升企业形象:注册成立海外离岸公司是企业走向世界,开展跨国业务,提升企业国际形象的捷径。成立跨国公司和集团公司,注册香港公司不仅可更好地提高形象及带来更好的经济效益,并在某些合同签署时,项目谈判往往需要海外公司的配合及参与,对提高企业的信誉并顺利到达谈判目的,是不可缺少的因素。到海外注册,可以方便资本重组和分离,提高资信,也方便曲线上市。
2、方便国际贸易,避开关税壁垒:设立香港公司,可以绕开进口国的高关税及配额限制,大大地方便了国际间贸易。
3、避开外汇管理、方便引资、加强海外融资能力:由于外汇制度的存在,及大量的人为因素,海外上市非常严格,这直接影响到企业的国际融资。但是海外离岸公司的资金转移不受任何限制,公司在资金使用上也很方便。通过海外公司,可直接或间接境外上市,达到为企业融资的目的;或国内母公司在海外融资时,海外公司将会起不可估量的作用。
4、注册香港公司程序便捷、开放,成本低廉:离岸公司的注册程序非常简单,可办专业的注册代理机构代为完成,无须注册人亲临注册地,而且注册后不须将资金打到国外公司,每年亦不须验资。
5、合法避税,降低财务、税务负担:有离岸法区均不同程度地规定了离岸公司所取得的营业收入和利润免交当地税或以极低的税率(如 1% )交纳。有的甚至免交遗产税。可利用海外公司妥善安排税务,合理合法避税。
6、简便的公司管理:离岸公司无须每年召开股东大会及董事会,即使召开,其地点也可任意选择,管理程式简单,即可轻装上阵,把全部精力投入到公司经营管理中。
7、公司注册资料及文件高度保密:为了吸引外国企业来注册,不少大洋岛国规定,在当地注册公司的股本构成、董事名单甚至公司营业情况,都可以保密,这使得公司状况得到高度保密,公众人士不能查阅,只有合法取得对离岸公司进口监管资格的信托管理公司才可以查阅公司的背景资料。注意:由于迫于美国等国家恐怖威胁的压力, BVI 群岛公司 , 已经由完全保密股东变作有条件保密 , 如今完全保密资料的只有马绍尔群岛
8、无营业范围和地区范围的限制:除了个别限制性行业,比如银行、保险、军事等,海外离岸公司的经营范围几乎没有限制。除注册地区外,公司可在世界任何国家地区开展业务及经营。
9、对投资人、股东、董事没有限制:对股东和董事的国籍、年龄、资产等均没有限制,大多“离岸”区可以接受法人出任公司董事一职。
10、企业向海外扩展、反向投资:将自身发展与国际市场接轨,实施反向投资,参与国际竞争,寻求企业进一步发展。这对于政治不稳或人治多于法制的国家尤其重要。
11、拥有国际品牌、提高企业效益:根据公司产品特性,选择海外公司注册地,如:高科技产业、仪器、设备、保健食品、化妆品、成衣等知名厂商多为美国公司,若在美国成立一家公司后,在以美国公司之名义授权给大陆、香港、东南亚等地生产。不仅提高了产品形象,同时提高销售附加值。
12、方便外汇结算及信用证押汇:不仅可以在境外开立帐号,也可以在国外的外资银行开立离岸帐号:储蓄户、支票户、信用证户、电话银行户等结算、汇兑、提现等自由。
13、移民及签证便利:海外公司的法人代表,可以方便来往于国际各国,因为这些海外注册地一般都是英美法德系属的国家,持有它们的签证,去大国商旅顺理成章。
14、用离岸公司注册商标及持有版权,保护无价资产。

【注册香港公司的缺点】
虽然离岸公司有如此多的优势,但也存在着一定的风险: 离岸公司的一个重要特点就是其高度的保密性,所以,与离岸公司进行业务往来可能会发生特殊的风险,对此企业在交易中应特别注意风险防范。
§对离岸公司的资信能力调查困难:注册地对离岸公司的宽松的管理制度,使得想从离岸公司的注册地全面获得离岸公司的资信情况几乎是不可能的,因为注册地对离岸公司严格的保密制度,即便注册地当地政府也难以了解公司的真实情况。
§香港公司的业务伙伴难以了解其真实的资产负债状况:因为离岸公司的财务状况是不对外公开的,。由于离岸公司的财务状况不够透明,境内银行向离岸公司提供贷款,或者企业与离岸公司订立合同都应保持谨慎。
§由于在离岸法域注册国际商事公司极为便利,无最低资本要求,数目小且不需要严格审查和提供资质文件,这一点极容易被某些不法投机分子所利用,一旦这类公司在我国开办的外商投资企业发生资金抽逃、不良债务等问题,则不可能在离岸地找到该公司,更不可能追回欠款。
因此,我国企业在与离岸公司合作时,要特别注意,对对方的调查应尽可能深入,订立合同应该尽可能详尽并积极敦促对方履行,利益攸关时要求对方提供担保等就更显得重要。
来源:http://www.registersh.com

  回复  引用    
#168楼2007-07-23 21:19 | C#入门[未注册用户]
请教一下,用方法三导出到Excel后,不能再修改页面控件的状态,如果禁用导出,修改导出的数量等.请问如何解决?QQ:27189461,Email:xiaozhang1106@sohu.com
  回复  引用    
#169楼2007-09-07 10:51 | 过客[未注册用户]
请问如果数据库中的某列的字段含有回车怎么办,我按你的方法导出后串行了
  回复  引用    
#170楼2007-10-12 09:38 | 你爸爸[未注册用户]
fuck
  回复  引用    
#171楼2007-10-19 17:33 | sorcom[未注册用户]
我也遇到了那个5655555555变成56E+13这种情况。加了'后excel也识别不成该列是文本啊。反而认为'是我导出的内容了。是不是要特殊处理啊。
各位指教一下。

  回复  引用    
#172楼2007-11-02 12:55 | Love1221[未注册用户]
--引用--------------------------------------------------
Kingeon: 导出成文本时,怎么实现自动回车?
--------------------------------------------------------
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
可能是编码的问题

楼主,问个问题:
我导出的虽然是在Execl文件里,但是如果你把以Execl文件上传就会出错。
看了一下导出的Execl文件。
除了有数据的地方有表格外,其他地方都是空白,连隐藏的表格都没有了

不知道有没有什么办法可以解决。也不知道是怎么一回事?
期盼解答。
谢谢

  回复  引用  查看    
#173楼2007-11-27 10:38 | Edwin dong      
楼主,我是使用方法三的方式做的,不过我现在遇到一个问题
我现在也是用datagrid导出excel文件的,不过我在datagrid里面有一列里面放了两个控件,一个dropdownlist,一个textbox,在导出数据的时候在这列里面会多处一个数据来,不知道这个数据从那里来的。(说明一下,如果没有dropdownlist控件,只有textbox的列,不会出现那个数据)。希望这里的各位给点意见啊。谢谢了

  回复  引用    
#174楼2008-01-18 16:56 | ou[未注册用户]
  回复  引用    
#175楼2008-02-22 16:57 | await[未注册用户]
好贴

  回复  引用  查看    
#176楼2008-02-24 22:11 | jeems      
我在button click里加入这个方法,但是却老是出现错误,那位兄弟能给个完整的源代码呀,谢谢 jeems@21cn.com
  回复  引用    
#177楼2008-02-27 09:02 | 莫名[未注册用户]
导出的excel文件无法重新导入到数据库或gridView中! 出现“文件不是期望的格式”的错误信息 ...
不是标准的excel格式!不是工作簿的规格 怎么解决......

  回复  引用    
#178楼2008-04-08 15:34 | HELLOL[未注册用户]
请问web.config中downloadurl怎么填?谢谢。
出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

官方网站 - http://***/yzm_advocr
识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar

  回复  引用  查看    
#180楼2008-05-05 23:57 | 爱网2008      
导出时科学技术法问题的解决:
在格式中添加 style="vnd.ms-excel.numberformat:@" 就可以了,这是到目前为止最正确的方法:
<td style="vnd.ms-excel.numberformat:@">

  回复  引用    
#181楼2008-05-30 00:06 | runnor[未注册用户]
@berlin8600,我也想导出多行表头,就是带合并的表头,怎么导啊。

  回复  引用  查看    
#182楼2008-08-28 17:38 | 有缘无份      
我导出之后是正常的,把导出的Excel在不做处理的情况再导入数据就有问题了。问题存在是文件名的有双引号引起来了,在另存为的时候可以看到,其它情况下是正常了。另存为把文件名的双引号去掉,文件就可以正常导入数据库。请问要怎么觖决
  回复  引用    
#183楼2008-11-18 16:02 | nbs[未注册用户]
谢谢楼主!
  回复  引用    
#184楼2008-12-13 09:45 | tbg[未注册用户]
我卡号是000005
导出成5了
前面的0没了,怎么让前面的0也导出显示啊

  回复  引用    
#185楼2009-02-07 10:31 | Jacobfree[未注册用户]
非常佩服你。我用你介绍的方法二很轻松地实现了在客户端生成一个xls文件的工作。谢谢!
但是,要在客户端一次(如:单击一次“确定”按钮)生成两个以上的文件时,仅能生成第一个文件,而后面的就不能生成了(和没有写代码一样。我曾用提示框试,提示框也不显示出来)。请问:原因是什么?有办法解决吗?急盼您的回复,因为我要从数据库中一次导出12个题库。本想生成一个excel文件(含12工作表,看来只能折衷成生成12个文件)。谢谢。

评论共2页: 上一页 1 2 



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 125519




相关文章:

相关链接: