找回密码
 立即注册

QQ登录

只需一步,快速开始

怕瓦落地

初级会员

17

主题

40

帖子

335

积分

初级会员

积分
335

活字格认证

怕瓦落地
初级会员   /  发表于:2016-4-12 11:21  /   查看:4167  /  回复:5
请教各位大神,在Spread 4.0版中  我想导出大批量数据需要注意哪些问题?我在导出大概10w左右数据时导出文件大小貌似过大?需要设置哪些属性避免导出文件渲染太多导致文件过大导出异常呢?

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-12 12:29:37
沙发
没有相关属性去控制,您可以先进行下测试,导出不光与数据量有关也与数据具体内容有关系。
如果真的是数据量过大无法导出就需要使用Office的相关组件导出了。
回复 使用道具 举报
怕瓦落地
初级会员   /  发表于:2016-4-12 14:01:53
板凳
测试数据量大概在1w行  10列左右  
在程序中基本都是赋值操作只对程序的value赋值
   FarPoint.Web.Spread.DoubleCellType objNumCell = new FarPoint.Web.Spread.DoubleCellType();
   objNumCell.ErrorMessage = "请输入数字型数值(数值范围:9999999999到-9999999999)";
   objNumCell.DecimalDigits = 4;
   objNumCell.MinimumValue = -9999999999;
   objNumCell.MaximumValue = 9999999999;
   objNumCell.FixedPoint = true;
木有单独设置其他属性。但是导出大概需要30分钟以上!
导出代码如下:
            Response.Clear();
            Response.BufferOutput = true;
            FpSpread1.Sheets[0].Protect = false;
            FpSpread1.SaveExcel(Response.OutputStream);
            Response.ContentType = "application/octet-stream";
            string outfileName = "demo";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(outfileName)));
            Response.OutputStream.Flush();
如上代码是否存在问题?还是导出上述数量级的数据这个速度属于正常?
CommandBar.Visible 设置命令行中是否可以自带导出功能?
劳烦版主解答,谢谢!
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-12 15:40:22
地板
您好,您方便发个demo上来吧,我这边模拟导出,基本2秒就好了。
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Web.Spread.DoubleCellType objNumCell = new FarPoint.Web.Spread.DoubleCellType();
  4.             objNumCell.ErrorMessage = "请输入数字型数值(数值范围:9999999999到-9999999999)";
  5.             objNumCell.DecimalDigits = 4;
  6.             objNumCell.MinimumValue = -9999999999;
  7.             objNumCell.MaximumValue = 9999999999;
  8.             objNumCell.FixedPoint = true;

  9.             FpSpread1.ActiveSheetView.ColumnCount = 11;
  10.             FpSpread1.ActiveSheetView.RowCount = 111111;
  11.             for (int i = 0; i < 10000; i++)
  12.             {
  13.                 for (int j = 0; j < 10; j++)
  14.                 {
  15.                     FpSpread1.ActiveSheetView.Cells[i, j].CellType = objNumCell;
  16.                     FpSpread1.ActiveSheetView.Cells[i, j].Value = i + j;
  17.                 }
  18.             }
  19.         }

  20.         protected void Button1_Click(object sender, EventArgs e)
  21.         {
  22.             Response.Clear();
  23.             Response.BufferOutput = true;
  24.             FpSpread1.Sheets[0].Protect = false;
  25.             FpSpread1.SaveExcel(Response.OutputStream, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
  26.             Response.ContentType = "application/octet-stream";
  27.             string outfileName = "demo.xlsx";
  28.             Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(outfileName)));
  29.             Response.OutputStream.Flush();
  30.         }
复制代码
回复 使用道具 举报
怕瓦落地
初级会员   /  发表于:2016-4-25 15:26:36
5#
dexteryao 发表于 2016-4-12 15:40
您好,您方便发个demo上来吧,我这边模拟导出,基本2秒就好了。

感谢回复!回应太慢了,问题暂时已解决!使用excel导出插件!再次感谢!
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-25 15:38:29
6#
怕瓦落地 发表于 2016-4-25 15:26
感谢回复!回应太慢了,问题暂时已解决!使用excel导出插件!再次感谢!

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部