创建的部分代码:(其中range,是来自别的sheet的数据,这里没办法。)
- let pivotTable
- try {
- pivotTable = sheet.pivotTables.add(
- this.mainSheet1PivotTable,
- range,
- 0,
- 0,
- this.vueThis.GC.Spread.Pivot.PivotTableLayoutType.tabular,
- this.vueThis.GC.Spread.Pivot.PivotTableThemes.light4,
- {
- showDrill: false, // 是否显示扩充/收缩按钮
- showMissing: false,
- bandRows: false,
- showRowHeader: false,
- showColumnHeader: false,
- mergeItem: true,
- insertBlankLineAfterEachItem: false, // 是否给每一项添加一个空行。
- grandTotalPosition: 3,
- // showHeaders: false,
- subtotalsPosition: 0, // 在底部或者头部显示汇总值,也可以不显示
- displayFieldsInPageFilterArea:
- this.vueThis.GC.Spread.Pivot.DisplayFields.overThenDown // 按照先纵向排列或者先横向排列展示报表筛选字段。
- }
- )
- } catch (err) {
- this.vueThis.MsgError(`透视表创建失败,${err}`)
- return
- }
- if (!pivotTable) {
- this.vueThis.MsgError(`当前环境不支持透视表授权`)
- return
- }
- const colFields = ['户型']
- const rowFields = ['综合单价', '单位', '项目名称及特征描述']
- rowFields.forEach((each) => {
- pivotTable.add(
- each,
- each,
- this.vueThis.GC.Spread.Pivot.PivotTableFieldType.rowField
- )
- })
- colFields.forEach((each) => {
- pivotTable.add(
- each,
- each,
- this.vueThis.GC.Spread.Pivot.PivotTableFieldType.columnField
- )
- })
- pivotTable.add(
- '单套工程量',
- '求和项:单套工程量',
- this.vueThis.GC.Spread.Pivot.PivotTableFieldType.valueField,
- 8
- )
复制代码
给创建的透视表设置数据格式:(这里使用的formatter方法,按照单元格设置的方式,不知道对不对)
- sheet.options.sheetTabColor = 'Accent 6 80'
- const GcStyle = this.vueThis.GC.Spread.Sheets.Style
- const style = new this.vueThis.GC.Spread.Sheets.Style()
- style.font = 'bold 12pt Arial'
- style.vAlign = 1
- style.hAlign = 1
- const valueStyle = new GcStyle()
- valueStyle.formatter = '#0.00'
- const valueStyle2 = new GcStyle()
- valueStyle2.formatter = '0\\.0,"万"'
- // var theme = new GC.Spread.Pivot.PivotTableTheme()
- const pivotTable = sheet.pivotTables.get(
- sheet.name() === this.mainSheet1PivotTable
- ? this.mainSheet1PivotTable
- : this.mainSheet2PivotTable
- )
- if (!pivotTable) {
- this.vueThis.MsgError(`当前环境不支持透视表授权`)
- return
- }
- const rowCount = sheet.getRowCount()
- const colCount = sheet.getColumnCount()
- this.stopSpreadRender()
- if (sheet.name() === this.mainSheet1PivotTable) {
- // this.vueThis.spread.suspendPaint()
- /**
- * 设置样式
- */
- sheet.setRowHeight(2, 42)
- sheet.setRowHeight(3, 42)
- sheet.setColumnWidth(0, 85)
- pivotTable.setStyle(
- {
- dataOnly: true,
- references: [
- {
- fieldName: '户型',
- subtotals: true
- // items: ['108户型', '*']
- }
- ]
- },
- valueStyle
- )
- // pivotTable.setStyle(this.getPivotTableFieldArea('综合单价', pivotTable), valueStyle)
- pivotTable.autoFitColumn()
- sheet.setStyle(2, 0, style)
- sheet.setStyle(3, 0, style)
- sheet.setStyle(3, 1, style)
- sheet.setStyle(3, 2, style)
- sheet.setColumnWidth(2, 280)
- sheet.getRange(4, 2, sheet.getRowCount(), 1).wordWrap(true)
- sheet.frozenRowCount(4)
- sheet.frozenColumnCount(3)
- //
- <div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: Consolas, "Courier New", monospace; line-height: 19px; white-space: pre;"><span style="color: #001080;">sheet</span>.<span style="color: #795e26;">getRange</span>(<span style="color: #098658;">4</span>, <span style="color: #098658;">3</span>, <span style="color: #0070c1;">rowCount</span>, <span style="color: #0070c1;">colCount</span>).<span style="color: #795e26;">formatter</span>(<span style="color: #a31515;">'0</span><span style="color: #ee0000;">\\</span><span style="color: #a31515;">.0,"万"'</span>)</div>}
复制代码
然后得到的样式是这个样子:
然后重点在这里,当我鼠标点击到单元格上面的时候
这个样式就发生了变化,加粗的没有了,统计成万的单元格式也没有了
当我重新设置上面说的样式相关的代码以后,再次点击又正常
我的猜测 :
1.点击单元格是不是内部会触发一个updateSource类似的操作,因为这个点击以后样式就没有了的效果,跟我代码调用updateSource一样。
还有一个问题关于updateSource
updateSource以后我如何知道当前的透视表已经更新完成 ,(更新完成以后 我要修改单元格样式。如果updateSource调用后直接修改样式,可能导致样式被重置了。)
我这个反馈的问题,需求就是。创建透视表,然后透视表的统计出来的户型的数据,要设置以万为 单位的显示。(实际需求可能还有其他的比如%百分比的格式等)
|
-
|