>我正在尝试将电子表格的"命名选项卡"读取到表中,更新值,然后将它们保存回同一选项卡,我试图看看它是否只是我或电子表格函数中的奇怪东西,伪代码如下。(我不认为我有编码问题,而是cf限制? 特定冷扣(以后可能会添加)
- CF电子表格读取工作表名称查询
- 转储查询 -- 确定
- 更新查询和转储 -- 确定
- CF电子表格更新工作表名称查询 -- 失败,已经有工作表名称为 -duh- 的工作表
- (也是 cf电子表格写入 -- 失败)
为了让这个工作,我采取了
- "读取"选项卡
- "修改"选项卡
-
- 读取工作簿 -- 新变量
-
- 删除工作表 -- 新变量
-
- 保存工作簿 -- 新的 var -- 磁盘版现在没有选项卡。.
- 更新工作簿添加工作表 - 使用 var 仅保留修改后的选项卡
-这似乎是可怕的资源密集型...简直是愚蠢的
- Forta示例似乎仅适用于单表工作簿。
提前谢谢。
加里
-- 更新:我没有使用标签,而是切换到脚本中的函数。 不使用查询对象。 所有 CF 实施 POI 更清洁的解决方案随之而来...实际代码
<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>
这个动作只是名字不好。根据文档: update
- 将新工作表添加到现有 XLS 文件。不能使用 uppdate
[原文如此] 操作来更改文件中的现有工作表。
为了让这个工作,我采取了
如果您不将自己限制为仅cfspreadsheet
,您应该能够使用 SpreadsheetRead 通过读取文件来"更新"工作表。然后删除工作表,并添加/重新创建它。
从技术上讲,您可以跳过删除/重新创建过程,只需就地修改现有工作表即可。只需阅读文件,将要修改的工作表设置为活动状态,然后进行更改即可。但是,根据修改的不同,通常只需删除工作表并插入新工作表即可。