找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2011-10-10 15:30  /   查看:7343  /  回复:2
大多数时候,终端用户想把 Spread 导出到 Excel 文件,存储到本地电脑上。GrapeCity Spread 控件的 SaveExcel() 方法提供把 Spread 内容导出到 Excel 文件的功能,SaveExcel() 方法拥有16种构造函数,这16中构造函数有的应用在服务端,有的应用在客户端。

我们需要调用 SaveExcel(Stream,ExcelSaveFlags) 构造函数去实现。
下面是导出到 Excel 文件的一个例子:
  1. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  2. FpSpread1.SaveExcel(ms, FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
  3. Response.Clear();
  4. Response.ContentType = "application/VND.ms-excel";
  5. Response.AddHeader("Content-Disposition", "attachment;filename=spread.xls");
  6. Response.BinaryWrite(ms.ToArray());
  7. ms.Flush();
  8. ms.Close();
  9. Response.End();
复制代码
如果你想导出 Spread 文件到开放的 XML 文件,代码应这样设置:
  1. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  2. FpSpread1.SaveExcel(ms, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
  3. Response.Clear();
  4. Response.ContentType = "application/VND.ms-excel";
  5. Response.AddHeader("Content-Disposition", "attachment;filename=spread.xlsx");
  6. Response.BinaryWrite(ms.ToArray());
  7. ms.Flush();
  8. ms.Close();
  9. Response.End();
复制代码
现在,让我们逐行的解释上述代码:
1.在第 1、2 行代码,我们创建了 MemoryStream 的实例对象,然后把它传递给 SaveExcel() 方法。如果我们想把 Spread 保存到开放的 XML 文件,可以应用 "UseOOXMLFormat" 保存标记。
2.第 3 行代码,调用 Response.Clear() 方法清除缓冲区的所有输出。
3.第 4 行代码,给 Response 对象的 ContentType 属性赋值为 "application/VND.ms-excel"
4.第 5 行代码,调用 Response.AddHeader() 方法设置适当的 HTTP 报头给 Response 对象。我们使用 "Content-Disposition" ,导出 Excel 文件时将激活文件下载对话框
5.第 6 行代码,调用 Response.BinaryWrite() 方法.使用这个方法的主要原因是这个方法可以在"不进行字符转换"的情况下把文本文件输出到缓冲区。

2 个回复

倒序浏览
study1990
金牌服务用户   /  发表于:2012-4-6 09:35:00
沙发
测试Response.Clear();时,说“未将对象引用设置到对象的实例”,是什么原因?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-6 11:36:00
板凳
study1990 你好,
下面是我的 Demo ,并没有出现异常,请对比:
2240s.zip (18.91 KB, 下载次数: 459)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部