程序帝

导航

==

3.aXi建议的方法,如附件所示:他是用纯文本的方式保存到HARD DISK,再打开的

 提供的代码是VB写的(我说初看起来怎么就这么别扭呢),在提供给大家一个网址,可以将VB的代码转换为C#的代码,但不要认为这是万能的

 有些代码是没有办法转换的,我是遇上了,这时,MSDN真是个好DD

 http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx

 还有,不要像我,傻乎乎地把全部代码都COPY进去转换,只要方法中间的代码COPY进去就可以了

 附上我的CODING

   string strFileName = user.Trim()+DateTime.Today.Year.ToString()+DateTime.Today.Month.ToString()+DateTime.Today.Day.ToString()+DateTime.Now.Hour.ToString()+DateTime.Now.Minute.ToString()+DateTime.Now.Second.ToString()+"HeaderCheckReport.xls";

    StreamWriter sw = new StreamWriter(Server.MapPath(".../toExcel/"+strFileName), false, Encoding.Unicode);   

     --strFileName,保存Excel的名称 ,不要觉得恐怖,就是精确到秒来区分文件的,否则USER多了,同一个名称的文件只会保留最新版,

       且USER要在新窗口自己将Excel保存至本机
    string strHeaderText = "";
    strHeaderText = this.dgdHideHeaderInfo.Columns[1].HeaderText;
    for(int j=2; j<=11;j++)
    {
     if(this.dgdHideHeaderInfo.Columns[j].HeaderText!="")
     {
      strHeaderText += "\t"+this.dgdHideHeaderInfo.Columns[j].HeaderText;   --类似在键盘上按“Tab”键,以此将每个CELL内容隔在单元格
     }      
    }     
    sw.WriteLine(strHeaderText);
    for(int i=0;i<Convert.ToInt32(this.lblTotal.Text.Trim());i++)   --循环将DataGrid内容导出
    {
     string ei = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdEI")).Text.ToString();
     string site = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdSite")).Text.ToString();
     string billNo = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdBillNo")).Text.ToString();
     string creator = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdCreator")).Text.ToString();
     string creationDate = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdCreationDate")).Text.ToString();
     string Atb1 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb1")).Text.ToString();
     string Atb2 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb2")).Text.ToString();
     string Atb3 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb3")).Text.ToString();
     string Atb4 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb4")).Text.ToString();
     string Atb5 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb5")).Text.ToString();
     string Atb6 = ((Label)this.dgdHideHeaderInfo.Items[i].FindControl("dgdAtb6")).Text.ToString();
     sw.WriteLine(ei+"\t"+site+"\t"+billNo+"\t"+creator+"\t"+creationDate+"\t"+Atb1+"\t"+Atb2+"\t"+Atb3+"\t"+Atb4+"\t"+Atb5+"\t"+Atb6);     
    }
    sw.Flush();
    sw.Close(); 

    (1)弹出一个新窗口,打开保存在SERVER上某文件夹的

    this.Response.Write("<script language='javascript'>window.open('../toExcel/"+strFileName+"','_blank','width=800,height=500,top=80,left=100,toolbar=yes,titlebar = yes,menubar=yes');</script>");

 ---相对路径, 这是我们最终采用的方法,有一小缺点,就是Excel档要保存在SERVER上,可能要麻烦WHO定期清理了

posted on 2010-11-03 17:25  程序帝  阅读(450)  评论(0编辑  收藏  举报