2

我正在尝试将电子表格的“命名选项卡”读入表格,更新值,然后将它们保存回同一个选项卡我试图查看它是否只是我或电子表格函数中的一些奇怪的东西,伪代码如下。(我不认为我有编码问题,而是 cf 限制?具体冷保留(可能稍后添加))

  • cfspreadsheet 读取 sheetname 查询
  • 转储查询——好的
  • 更新查询和转储——好的
  • cfspreadsheet 更新工作表名称查询 -- 失败,已经有工作表名称为 -duh-
  • (也 cfspreadsheet 写入 - 失败)

为了让它发挥作用,我已经采取了

  • 阅读标签
  • 修改选项卡
    • 阅读工作簿——新变量
    • 删除工作表——新变量
    • saveworkbook -- new var -- disk edition now sans tab..
  • 更新工作簿添加工作表 - 使用 var 仅保留修改后的选项卡

- 这似乎是可怕的资源密集型......而且很愚蠢

  • Forta 示例似乎仅适用于单张工作簿。

提前致谢。

加里

--更新:我没有使用标签,而是切换到脚本中的函数。不使用查询对象。POI Cleaner 解决方案的所有 cf 实现都遵循...实际代码

<cfscript>
// read workbood; set active sheet
sObj = SpreadsheetRead(expectedLocWName);
    SpreadsheetSetActiveSheet(sObj, 'Version');

    // internal code removed spreadsheet getcellvalue

// update
spreadsheetsetcellvalue(sObj, fileVersionNext, 5, 2 );

var overWriteMe = true;
spreadsheetwrite(sObj, expectedLocWName, overWriteMe);
</cfscript> 
4

1 回答 1

2

该动作只是名称不佳。根据文档update- 向现有 XLS 文件添加新工作表。您不能使用uppdate[sic] 操作来更改文件中的现有工作表。

为了让它发挥作用,我已经采取了

如果您cfspreadsheet不仅限于此,您应该能够通过使用SpreadsheetRead读取文件来“更新”工作表。然后删除工作表,并添加/重新创建它。

从技术上讲,您可以跳过删除/重新创建过程并简单地修改现有工作表。只需读入文件,将要修改的工作表设置为 active,然后进行更改。但是,根据修改,删除工作表并插入新工作表通常更简单。

于 2013-11-18T15:09:23.823 回答