study1990 发表于 2013-12-25 16:07:00

【ASP.NET】excel导入spread后,导出pdf,第一二行中列的左边框很粗,希望统一样式

回复 19楼iceman的帖子




这个excel导入spread后,导出pdf,第一二行中列的左边框很粗,希望统一样式,代码控制没作用,该怎么办?

roger.wang 发表于 2013-12-25 18:21:00

回复 1楼study1990的帖子

您好,我测试了一下,您描述的情况属实。

这个需要咨询一下产品团队,一有新的进展会及时通知您的。

         
this.FpSpread1.OpenExcel(@"C:\Users\rogerwang\Desktop\損益計算書(PL).xlsx");
this.FpSpread1.SavePdf(@"c:\a.pdf");

roger.wang 发表于 2013-12-26 13:41:00

回复 1楼study1990的帖子

产品团队反馈如下:
Excel导入Spreadfor ASP.NET是通过如下的对应关系:

Border Styles Substituted

目前无接口修改,非常抱歉:) 。

study1990 发表于 2013-12-26 15:16:00

回复 3楼roger.wang的帖子

在spread中是Solid - 2,导出pdf时设置为Solid-1,导出的pdf还是很粗,这是bug吗?

但当把最左边单元格的左边框设成1或0,就可以了。不过就多出个口子。

roger.wang 发表于 2013-12-26 17:15:00

回复 4楼study1990的帖子

您说的情况,我写代码验证了,情况属实。

可选方案有2个:
1 默认不做处理,导出的PDF边框粗一些
2 如下修改为1个pixel,但是会存在一个缺口(左侧或者右侧)

      
   protected void Page_Load(object sender, EventArgs e)
      {
            if (IsPostBack)
            {
                return;
            }

            this.FpSpread1.OpenExcel(@"C:\a.xls");

            SetBord(1);

            SetEdge();
            this.FpSpread1.SavePdf(@"c:\a.pdf");
      }

      private void SetBord(int border)
      {
            for (int i = 0; i < FpSpread1.Rows.Count; i++)
            {
                for (int j = 0; j < FpSpread1.Columns.Count; j++)
                {
                  this.FpSpread1.Cells.Border.BorderSizeBottom = 1;
                  this.FpSpread1.Cells.Border.BorderSizeLeft = 1;
                  this.FpSpread1.Cells.Border.BorderSizeRight = 1;
                  this.FpSpread1.Cells.Border.BorderSizeTop = 1;
                }
            }
      }

      private void SetEdge(int border = 2)
      {
            for (int i = 0; i < FpSpread1.Rows.Count; i++)
            {
                for (int j = 0; j < FpSpread1.Columns.Count; j++)
                {
                  if (i == 0)
                  {
                        this.FpSpread1.Cells.Border.BorderSizeTop = 2;
                  }
                  else if (i == FpSpread1.Rows.Count - 1)
                  {
                        this.FpSpread1.Cells.Border.BorderSizeBottom = 2;
                  }
                  else if (j == 0)
                  {
                        this.FpSpread1.Cells.Border.BorderSizeLeft = 2;   
                  }
                  else if (j == FpSpread1.Columns.Count - 1)
                  {
                  
                  this.FpSpread1.Cells.Border.BorderSizeRight = 2;
                  }
                }
            }
      }


我这里会给产品团队报一个bug,不过可能修复的周期较长。

非常抱歉:)

study1990 发表于 2013-12-27 09:27:00

回复 5楼roger.wang的帖子

好吧,我再给客户反映一下。

:share:

roger.wang 发表于 2013-12-27 09:29:00

回复 6楼study1990的帖子

感谢理解   :mj72:
页: [1]
查看完整版本: 【ASP.NET】excel导入spread后,导出pdf,第一二行中列的左边框很粗,希望统一样式