(本文档仅供参考)
示例说明
电子表格在excel中对字段设置了自动换行后,在excel端的打印效果与在浏览器端的打印效果不一致。
...
我们可以通过调整设置和宏代码辅助,实现正确的打印效果。
设置方法
前提
1.首先要明确,对于Excel来说,行高和自动换行这两个功能是冲突的。在没有人为调整过行高的情况下,设置自动换行时,Excel中的数据是能够自动换行的。如下:
但是如果人为调整了行高,那么再设置自动换行,是不会生效的。Excel以设置的行高进行展示,不会再根据自动换行所需要的行高去进行调整了。如下:如果先设置的自动换行,再调整行高。也是以人为设置的行高为主
2.因此如果要实现自动换行,且自动调整行高的效果。需要先将人为设置的行高修改回原始默认的行高。如何修改呢?
(1)先将这一行所有单元格的已设置的“自动换行”取消
(2)将鼠标放在行号的下方,比如要调整第3行的行高,则将鼠标放在第3行和第4行的中间那根分界线上,然后双击,即可讲人为设置的行高取消。
...
(4)可选中单元格,然后在“开始”-》“格式”中,勾选“自动调整行高”
3.对于合并了行的单元格来说,自动换行的行高无法确保一定能够自动适应。
...
设置步骤
1.了解了Excel自动换行和行高等前提条件之后,我们需要在Excel中打开电子表格
2.对于该电子表格中,如果不需要自动换行,只要固定行高的行,我们可以手动设置一下行高。比如类别这一行,不需要自动换行。且要固定行高,因此可以右键设置一下行高。(注:若不设置行高,后续使用的宏代码会自动调整行高)
3.对于需要自动换行的单元格所在的行,根据“前提”中的信息。先将这一行的所有单元格的自动换行取消掉,并且调整行高回到原始的行高
然后再次设置“自动换行”和“自动调整行高”
4.一般情况下,通过上面的设置已经能够解决打印时效果不正确的问题。若打印仍有问题,可增加如下宏代码,做强制处理
(1)在报表宏界面新建服务端模块。在弹出的新建模块对话框中,选择对象为spreadSheetReport、事件为onBeforeOutput、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(spreadsheetReport) { spreadsheetReport.workbook.worksheets.get(0).autoFitRows(true); } |
另:如果使用上面的报表宏还无法解决,可尝试使用下面的报表宏解决。
宏类型
...
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(spreadsheetReport) { var options = Packages.com.aspose.cells.AutoFitterOptions(); options.setAutoFitMergedCells(true); spreadsheetReport.workbook.worksheets.get(0).autoFitRows(options); } |
...