帮帮忙!如何将已有的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#