Spread模仿Excel打印预览之A4纸张虚线

发布时间:2013/12/05 00:12 发布者:roger.wang

返回博客中心

Excel中,有一个很有用的小功能:查看打印A5纸张大小的虚线。 这样就方便用户在编辑大数据量的Excel文件时,知道那些内容是打印在一张A4纸张的,那些内容是打印到另外一张的,非常方便打印需求的用户。

Excel_Size

Spread也可以实现这个功能。

首先,换算像素单位:

A4纸张的大小为:21cm × 29.7cm, 我们选择72PPI,则换算为595 Pixels  ×   842 Pixels的单位。

Spread中的Row、Columns的单位是Pixel像素,这个是计算机显示系统的度量标配,而A4纸张打印用的是厘米cm,故需要有一个转化。 非常巧的是,有一个专门的网站用来参考:http://www.a4papersize.org/

其次, 查找Row\Column Index虚线列表

  1:             int rowCount = this.fpSpread1.ActiveSheet.RowCount;
  2:             int colCount = this.fpSpread1.ActiveSheet.ColumnCount;
  3: 
  4:             //Row Scan
  5:             float tempPixels = 0;
  6:             List<int> rowBorderList = new List<int>();
  7:             for (int i = 0; i < rowCount; i++)
  8:             {
  9:                 float pixels = this.fpSpread1.ActiveSheet.GetPreferredRowHeight(i);
 10:                 tempPixels += pixels;
 11:                 if (tempPixels >= height_pixels)
 12:                 {
 13:                     rowBorderList.Add(i);
 14:                     tempPixels = 0;
 15:                 }
 16:             }

 

在一个Spread.Sheet页面中,可能会存在n个A4纸张,故用了一个List来进行保存需要划线的个数。

 

最后,画虚线边框

  1:             //Border
  2:             FarPoint.Win.ComplexBorderSide bottomborder = new FarPoint.Win.ComplexBorderSide(Color.Black, 1, DashStyle.Dash);
  3: 
  4:  foreach (int item in rowBorderList)
  5:             {
  6:                 fpSpread1.Sheets[0].Cells[item, 0, item, colCount - 1].Border =
  7:      new FarPoint.Win.ComplexBorder(null, null, null, bottomborder);
  8: 
  9:             }

 

Row、Column都画完线后,整个工作就99%结束了,但是还存在一个缺陷:Row、Column划线交接的地方,需要补齐虚线,因为先Row再Column的方式把上面的冲掉了。

 

我们通过如下代码即可实现:

  1:  foreach (int row in rowBorderList)
  2:             {
  3:                 foreach (int col in colBorderList)
  4:                 {
  5:                     fpSpread1.Sheets[0].Cells[row, col].Border =
  6:      new FarPoint.Win.ComplexBorder(null, null, bottomborder, bottomborder);
  7:                 }
  8:             }

源码下载: 


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网