找回密码
 立即注册

QQ登录

只需一步,快速开始

michael

银牌会员

22

主题

57

帖子

3974

积分

银牌会员

积分
3974

活字格认证

michael
银牌会员   /  发表于:2012-4-2 18:33  /   查看:6839  /  回复:8
1.想设置导出的excel显示一页宽一页高 (导出的表格在一页显示)该如何处理,即用打印预览看在一个页面
2.使用saveexceltoresponse的时候 中文文件名显示乱码 文件名使用sever.urlencode处理后也不行 怎么回事呢?

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-4-5 10:18:00
沙发

回复 1# michael 的帖子

michael 你好,

1.不好意思,关于问题一不是很明白你的 Case。为了更快的解决问题,能否提供预期 Excel 截图并附上说明

2.下面是我使用 1# 中方法导出 Excel 代码,没有出现乱码,请对照,如果问题没有解决,请发 Demo 到论坛调试。

  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 this.FpSpread1.Sheets[0].ColumnCount = 10;
  6.                 this.FpSpread1.Sheets[0].RowCount = 10;

  7.                 for (int i = 0; i < 10; i++)
  8.                 {
  9.                     for (int j = 0; j < 10; j++)
  10.                     {
  11.                         this.FpSpread1.Sheets[0].Cells[i,j].Text = "test";
  12.                         this.FpSpread1.Sheets[0].Columns[j].Label = "列 " + j.ToString();
  13.                     }
  14.                 }
  15.             }
  16.         }

  17.         protected void Button1_Click(object sender, EventArgs e)
  18.         {
  19.             this.FpSpread1.SaveExcelToResponse(Server.UrlEncode("测试.xls"), FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
  20.         }
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-6 09:13:00
板凳
是这样的 现在用spread导出excel后 excel文件的打印预览时 内容会分页预览(显示在第二页)。
我就是问下 可不可以再导出时通过设置把excel文件内容调整在一页中
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-6 10:43:00
地板

回复 3# michael 的帖子

michael 你好,
我对该问题的理解是:由于列过多而导致 打印预览时分页,我们可以通过设置 PrintInfo 实现调整内容到一页的效果,参考代码:
  1. FarPoint.Web.Spread.PrintInfo printInfo = new FarPoint.Web.Spread.PrintInfo();
  2.             printInfo.UseSmartPrint = true;
  3.             this.FpSpread1.Sheets[0].PrintInfo = printInfo;
  4.             this.FpSpread1.SaveExcelToResponse(Server.UrlEncode("测试.xls"), FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-6 11:25:00
5#
谢谢 我回去试试看
中文乱码那个问题 我发现是这样的 this.FpSpread1.SaveExcelToResponse(Server.UrlEncode("测试.xls"), 这样直接输入中文名就没问题了 但是我的文件名是从另一个dll工程中引入的比如
Server.UrlEncode(XXXXDLL.FILENAME),
XXXXDLL.FILENAME = "测试.xls";
XXXXDLL中 public const string FILENAME  = "测试.xls"; 这种情况下就是有乱码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-6 18:33:00
6#

回复 5# michael 的帖子

好的,感谢你把解决方案反馈给我们。
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-10 10:41:00
7#
4#回复
按照printInfo.UseSmartPrint = true;  this.FpSpread1.Sheets[0].PrintInfo = printInfo;的方式设置后导出的excel预览还是分页的 没起作用。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-10 12:17:00
8#

回复 7# michael 的帖子

michael 你好,
不好意思,在导出 Excel 时 PrintInfo 的信息是不会导出的。
请问楼主有多少列数据?可以适当调整列的宽度,进而使 PrintPreview 显示到一页:
后台设置方法:

  1. for (int i = 0; i < this.FpSpread1.Sheets[0].ColumnCount; i++)
  2.                 {
  3.                     this.FpSpread1.Sheets[0].Columns[i].Width = 20;
  4.                 }
复制代码

前台设置方法:

  1.     <script type="text/javascript">
  2.         window.onload = function test() {
  3.         var spread=this.document.getElementById("FpSpread1");
  4.         var colCount = spread.GetColCount();
  5.         for (var i = 0; i < colCount; i++) {
  6.                 FpSpread1.SizeToFit(i)
  7.             }
  8.         }
  9.     </script>
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-20 09:40:00
9#
5#的问题 有解决方法吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部