当前位置:编程学习 > C#/ASP.NET >>

帮帮忙!如何将已有的excel文件模板填充数据后发送到客户端

XlsDocument xls = new XlsDocument(Server.MapPath("~/ls.xls"));            Worksheet ws = xls.Workbook.Worksheets[0];             Cells cells = ws.Cells;            Cell cell;            cell = ws.Cells.Add(1, 1, "saaa");             xls.Send();每次都是在最后一条xls.send()上出错“未将对象引用设置到对象的实例。”因为我是想用ls.xls文件做模板,向里面写内容后在发送到客户端另存,所以不能用新创建空的excel文件实例。我知道在新创建实例的时候,xls.send()没有问题。另外因为这个模板里面有图表,所以没有考虑从打开已有的模板中向新创建的实例中写数据。 --------------------编程问答-------------------- 是不是最有一条越界了,得到的对象为空,调试最后一条 --------------------编程问答-------------------- 我随便打开一个excel文档都这样,不是那个问题,就是什么都不写,直接XlsDocument xls = new XlsDocument(Server.MapPath("~/ls.xls"));  xls.Send();也会出现一样的错误。 --------------------编程问答-------------------- 我使用的是MyXls组件,要如何打开模板后加上数据后另存到客户端呢?新建的文档可以使用send方法,可是对打开的已有文件就没法使用send方法,怎么办? --------------------编程问答--------------------

protected void Page_Load(object sender, EventArgs e) {

            //导出会员卡并下载
            Admin_Load("downcard", "html");
            string all = Str2Str(q("all"));
            doh.Reset();
            doh.SqlCmd = "SELECT [Id],[UserPass],[VipYear],[AddDate] FROM [lvegu_normal_usergenlog] WHERE IsUsed=0";
            if (all == "0") {//只导出未导出的部分
                doh.SqlCmd += " AND [IsExport] =0";
            }

            using (DataTable dt = doh.GetDataTable()) {
                if (dt.Rows.Count == 0) {
                    Response.Write("没有可以生成的会员卡");
                    Response.End();
                }
                //导出成csv格式文件
                string tableheader = "会员卡";
                string columname = "卡号,初始密码,卡类型,生成时间";
                MemoryStream output = new MemoryStream();
                //如果导出成功,直接下载文件
                if (csvHelp.dt2csv(dt,tableheader, columname, ref output)) {
                    Response.ClearHeaders(); 
                    Response.ContentType = "text/comma-separated-values";
                    Response.AppendHeader("Content-Disposition", "attachment;filename=usercard.csv");
                    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");//转成gb2312以免中文出现乱码
                    Response.BinaryWrite(output.ToArray());

                    //更新会员卡记录表
                    doh.Reset();
                    doh.ConditionExpress = "[IsExport] =0";
                    doh.AddFieldItem("IsExport", 1);
                    doh.Update("lvegu_normal_usergenlog");
                    Response.End();
                }
            }
        }

我的是导出csv
从数据库中读取数据写入文件流,进行下载 --------------------编程问答-------------------- 谢谢楼上,不过我现在要用MyXls组件,实现打开一个模板文件,将数据库的内容写进模板中后在存到客户端。新建的文件都可以写入数据后存到客户端,例如:           
              XlsDocument xls = new XlsDocument();
            xls.FileName = "zyyys1116.xls";//指定文件名
              string sheetName = "111";
            Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);       
              Cells cells = sheet.Cells;
            Cell cell;
            cell = sheet.Cells.Add(1, 1, "Hello!");
            cell = sheet.Cells.Add(1, 2, "1,2");
            cell = sheet.Cells.Add(2, 1, "2,1");
            xls.Send();
就不出现问题。但是如果打开以后模板,再发送客户端就出现错误提示。例如:
             XlsDocument xls = new XlsDocument(Server.MapPath("~/ls.xls")); 
           Worksheet ws = xls.Workbook.Worksheets[0];             
            Cells cells = ws.Cells;
            Cell cell; 
           cell = ws.Cells.Add(1, 1, "saaa");  
           xls.Send();
在最后一条上出现
错误。怎么解决MyXls组件的这个问题。我就是想用这个组件实现功能。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,