diff --git a/src/views/business/lab/excelEdit/excelEditDialog.vue b/src/views/business/lab/excelEdit/excelEditDialog.vue index 5f5596e..0e874b5 100644 --- a/src/views/business/lab/excelEdit/excelEditDialog.vue +++ b/src/views/business/lab/excelEdit/excelEditDialog.vue @@ -91,7 +91,6 @@ designer = new GC.Spread.Sheets.Designer.Designer(designerContainerRef.value) // 表格设计器实例 spread = designer.getWorkbook() // 创建工作簿实例 // sheet = spread.getActiveSheet() // 获取当前活动工作表 - console.log('当前工作表sheet', sheet) initComplete() diff --git a/src/views/business/lab/excelEdit/excelEditDialog.vue b/src/views/business/lab/excelEdit/excelEditDialog.vue index 5f5596e..0e874b5 100644 --- a/src/views/business/lab/excelEdit/excelEditDialog.vue +++ b/src/views/business/lab/excelEdit/excelEditDialog.vue @@ -91,7 +91,6 @@ designer = new GC.Spread.Sheets.Designer.Designer(designerContainerRef.value) // 表格设计器实例 spread = designer.getWorkbook() // 创建工作簿实例 // sheet = spread.getActiveSheet() // 获取当前活动工作表 - console.log('当前工作表sheet', sheet) initComplete() diff --git a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts index 217734b..89093ef 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书' -} +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书' +// } /** * 处理表单数据字段的对应 @@ -55,11 +55,12 @@ // 处理数据 const solvedData = solveFormData(type, data) // 获取sheet页数量 - const seetCount = spread.getSheetCount() - for (let i = 0; i < seetCount; i++) { + const sheetCount = spread.getSheetCount() + for (let i = 0; i < sheetCount; i++) { // 单元格绑定数据源 const source = new GC.Spread.Sheets.Bindings.CellBindingSource(solvedData) - const sheet = spread.getSheet(i) // 获取第几个sheet页 + // 获取第几个sheet页 + const sheet = spread.getSheet(i) // 填入数据 sheet.setDataSource(source) } diff --git a/src/views/business/lab/excelEdit/excelEditDialog.vue b/src/views/business/lab/excelEdit/excelEditDialog.vue index 5f5596e..0e874b5 100644 --- a/src/views/business/lab/excelEdit/excelEditDialog.vue +++ b/src/views/business/lab/excelEdit/excelEditDialog.vue @@ -91,7 +91,6 @@ designer = new GC.Spread.Sheets.Designer.Designer(designerContainerRef.value) // 表格设计器实例 spread = designer.getWorkbook() // 创建工作簿实例 // sheet = spread.getActiveSheet() // 获取当前活动工作表 - console.log('当前工作表sheet', sheet) initComplete() diff --git a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts index 217734b..89093ef 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书' -} +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书' +// } /** * 处理表单数据字段的对应 @@ -55,11 +55,12 @@ // 处理数据 const solvedData = solveFormData(type, data) // 获取sheet页数量 - const seetCount = spread.getSheetCount() - for (let i = 0; i < seetCount; i++) { + const sheetCount = spread.getSheetCount() + for (let i = 0; i < sheetCount; i++) { // 单元格绑定数据源 const source = new GC.Spread.Sheets.Bindings.CellBindingSource(solvedData) - const sheet = spread.getSheet(i) // 获取第几个sheet页 + // 获取第几个sheet页 + const sheet = spread.getSheet(i) // 填入数据 sheet.setDataSource(source) } diff --git a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts index fe751cd..d7374ac 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts @@ -16,7 +16,7 @@ left = 0, // 图片在工作表中的左偏移量,即图片左上角相对于工作表左上角的水平距离,单位通常为像素 top = 0, // 图片在工作表中的上偏移量,即图片左上角相对于工作表左上角的垂直距离,单位通常为像素。 ) { - const picture = sheet.pictures.add(name, url, left, top, width, height) + const picture = sheet.shapes.addPictureShape(name, url, left, top, width, height) picture.startRow(startRow) picture.startColumn(startColumn) // 设置图片在工作表中起始列的索引 picture.startRowOffset(startRowOffset) // 用于设置图片相对于起始行的垂直偏移量,单位通常为像素。如果设置为 10,表示图片会相对于起始行向下偏移 10 像素。 diff --git a/src/views/business/lab/excelEdit/excelEditDialog.vue b/src/views/business/lab/excelEdit/excelEditDialog.vue index 5f5596e..0e874b5 100644 --- a/src/views/business/lab/excelEdit/excelEditDialog.vue +++ b/src/views/business/lab/excelEdit/excelEditDialog.vue @@ -91,7 +91,6 @@ designer = new GC.Spread.Sheets.Designer.Designer(designerContainerRef.value) // 表格设计器实例 spread = designer.getWorkbook() // 创建工作簿实例 // sheet = spread.getActiveSheet() // 获取当前活动工作表 - console.log('当前工作表sheet', sheet) initComplete() diff --git a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts index 217734b..89093ef 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书' -} +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书' +// } /** * 处理表单数据字段的对应 @@ -55,11 +55,12 @@ // 处理数据 const solvedData = solveFormData(type, data) // 获取sheet页数量 - const seetCount = spread.getSheetCount() - for (let i = 0; i < seetCount; i++) { + const sheetCount = spread.getSheetCount() + for (let i = 0; i < sheetCount; i++) { // 单元格绑定数据源 const source = new GC.Spread.Sheets.Bindings.CellBindingSource(solvedData) - const sheet = spread.getSheet(i) // 获取第几个sheet页 + // 获取第几个sheet页 + const sheet = spread.getSheet(i) // 填入数据 sheet.setDataSource(source) } diff --git a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts index fe751cd..d7374ac 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts @@ -16,7 +16,7 @@ left = 0, // 图片在工作表中的左偏移量,即图片左上角相对于工作表左上角的水平距离,单位通常为像素 top = 0, // 图片在工作表中的上偏移量,即图片左上角相对于工作表左上角的垂直距离,单位通常为像素。 ) { - const picture = sheet.pictures.add(name, url, left, top, width, height) + const picture = sheet.shapes.addPictureShape(name, url, left, top, width, height) picture.startRow(startRow) picture.startColumn(startColumn) // 设置图片在工作表中起始列的索引 picture.startRowOffset(startRowOffset) // 用于设置图片相对于起始行的垂直偏移量,单位通常为像素。如果设置为 10,表示图片会相对于起始行向下偏移 10 像素。 diff --git a/src/views/business/lab/excelEdit/methods/bind/bindTable.ts b/src/views/business/lab/excelEdit/methods/bind/bindTable.ts index 8545a05..f4e5b12 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindTable.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindTable.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' -import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书', -} +// import dayjs from 'dayjs' +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书', +// } /** * 处理表单数据字段的对应 diff --git a/src/views/business/lab/excelEdit/excelEditDialog.vue b/src/views/business/lab/excelEdit/excelEditDialog.vue index 5f5596e..0e874b5 100644 --- a/src/views/business/lab/excelEdit/excelEditDialog.vue +++ b/src/views/business/lab/excelEdit/excelEditDialog.vue @@ -91,7 +91,6 @@ designer = new GC.Spread.Sheets.Designer.Designer(designerContainerRef.value) // 表格设计器实例 spread = designer.getWorkbook() // 创建工作簿实例 // sheet = spread.getActiveSheet() // 获取当前活动工作表 - console.log('当前工作表sheet', sheet) initComplete() diff --git a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts index 217734b..89093ef 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindForm.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindForm.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书' -} +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书' +// } /** * 处理表单数据字段的对应 @@ -55,11 +55,12 @@ // 处理数据 const solvedData = solveFormData(type, data) // 获取sheet页数量 - const seetCount = spread.getSheetCount() - for (let i = 0; i < seetCount; i++) { + const sheetCount = spread.getSheetCount() + for (let i = 0; i < sheetCount; i++) { // 单元格绑定数据源 const source = new GC.Spread.Sheets.Bindings.CellBindingSource(solvedData) - const sheet = spread.getSheet(i) // 获取第几个sheet页 + // 获取第几个sheet页 + const sheet = spread.getSheet(i) // 填入数据 sheet.setDataSource(source) } diff --git a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts index fe751cd..d7374ac 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindPicture.ts @@ -16,7 +16,7 @@ left = 0, // 图片在工作表中的左偏移量,即图片左上角相对于工作表左上角的水平距离,单位通常为像素 top = 0, // 图片在工作表中的上偏移量,即图片左上角相对于工作表左上角的垂直距离,单位通常为像素。 ) { - const picture = sheet.pictures.add(name, url, left, top, width, height) + const picture = sheet.shapes.addPictureShape(name, url, left, top, width, height) picture.startRow(startRow) picture.startColumn(startColumn) // 设置图片在工作表中起始列的索引 picture.startRowOffset(startRowOffset) // 用于设置图片相对于起始行的垂直偏移量,单位通常为像素。如果设置为 10,表示图片会相对于起始行向下偏移 10 像素。 diff --git a/src/views/business/lab/excelEdit/methods/bind/bindTable.ts b/src/views/business/lab/excelEdit/methods/bind/bindTable.ts index 8545a05..f4e5b12 100644 --- a/src/views/business/lab/excelEdit/methods/bind/bindTable.ts +++ b/src/views/business/lab/excelEdit/methods/bind/bindTable.ts @@ -1,8 +1,8 @@ import GC from '@grapecity-software/spread-sheets' -import dayjs from 'dayjs' -const certTypeMap: { [key: string]: string } = { - 1: '校准证书', -} +// import dayjs from 'dayjs' +// const certTypeMap: { [key: string]: string } = { +// 1: '校准证书', +// } /** * 处理表单数据字段的对应 diff --git a/src/views/business/lab/excelEdit/methods/file.ts b/src/views/business/lab/excelEdit/methods/file.ts index 8156afd..312ee55 100644 --- a/src/views/business/lab/excelEdit/methods/file.ts +++ b/src/views/business/lab/excelEdit/methods/file.ts @@ -45,7 +45,7 @@ return file instanceof Blob } -/** +/** * @param spread spread实例 * @param file 文件 * @returns @@ -82,6 +82,44 @@ }) } +/** + * + * @param spread 工作簿实例 + */ +export function handleTableToRange(spread: any) { + // 获取 sheet 页数量 + const sheetCount = spread.getSheetCount() + for (let i = 0; i < sheetCount; i++) { + const sheet = spread.getSheet(i) // 获取sheet页 + const tables = sheet.tables.all() // 获取这个sheet页所有的表格 + // 检查工作表中是否有表格 + if (tables.length === 0) { + console.log(`工作表 ${sheet.name()} 中没有表格`) + continue + } + // 遍历该工作表中的所有表格 + for (let j = 0; j < tables.length; j++) { + const table = tables[j] + try { + spread.commandManager().execute({ + cmd: 'tableToRange', + sheetName: sheet.name(), + tableName: table.name(), + }) + console.log( + `工作表 ${sheet.name()} 中表格 ${table.name()} 转换为区域操作成功`, + ) + } + catch (error) { + console.error( + `执行工作表 ${sheet.name()} 中表格 ${table.name()} 转换为区域操作时出错:`, + error, + ) + } + } + } +} + // 获取文件导出选项 function getExportOptions(fileType: any) { return { @@ -89,10 +127,13 @@ // 包含绑定数据源,文件中包含数据绑定时,是否导出绑定数据 includeBindingSource: true, // 是否保存为视图 - saveAsView: true, + // 如果需要确保导出的文件与用户在视图中看到的内容一致(包括格式化后的数据显示),可以将 saveAsView 设置为 true。 + // 如果需要避免特定控件(如日期范围控件)的值类型发生变化,可以将 saveAsView 设置为 false + saveAsView: false, // 导出文件时是否包含样式 includeStyles: true, // 导出文件时是否包含公式 + // 如果 includeFormulas 设置为 true(默认值),则导出的文件将包含公式;如果设置为 false,则公式将被忽略,仅导出计算结果或静态数据。 includeFormulas: true, // 包含未使用名称,导出文件时是否包含无用的名称管理器,若文件中包含大量无用的名称管理器,设置为true可减小文件大小 includeUnusedNames: true, @@ -100,7 +141,7 @@ includeEmptyRegionCells: true, // 包含自动合并的单元格,导出文件是否将自动合并的单元格视为真实合并单元格,当文件中包含自动合并的单元格,导出Excel时,希望成为真实的合并单元格时,建议开启 includeAutoMergedCells: true, - // 导出时是否包含计算缓存数据,计算缓存数据可以更快的打开文件。 + // 决定是否包含计算引擎缓存。如果设置为 true,导出的文件将包含计算引擎的缓存数据,这可以帮助在重新加载文件时加快计算速度,因为一些计算结果已经被缓存。 includeCalcModelCache: false, } } @@ -132,6 +173,7 @@ onlyFetchFile = false, getFileName = 'exportFile', ) { + handleTableToRange(spread) const options = getExportOptions(fileType) const fileName = `${getFileName}.${fileType}` return new Promise((resolve) => {