cfspreadsheet и изменение содержимого вкладки, получение вкладки при обновлении

Я пытаюсь прочитать «именованную вкладку» электронной таблицы в таблицу, обновить значения, а затем сохранить их обратно на ту же вкладку. Я пытаюсь увидеть, является ли это только мной или чем-то странным в функциях электронной таблицы, следует псевдокод. (Я не думаю, что у меня проблема с кодированием, но ограничение cf? Конкретный холод скрыт (может быть добавлен позже))

  • cfspreadsheet читать запрос имени листа
  • запрос дампа -- ок
  • запрос на обновление и дамп -- ок
  • cfspreadsheet обновить запрос имени листа -- ошибка, уже есть лист с именем листа -duh-
  • (также cfspreadsheet пишет -- терпит неудачу)

чтобы заставить это работать, я прибегнул к

  • вкладка чтения
  • изменить вкладку
    • read workbook -- new var
    • delete sheet -- new var
    • saveworkbook -- new var -- disk edition now sans tab..
  • обновить рабочую книгу, добавить лист - используя var, удерживая только измененную вкладку

-- это кажется ужасно ресурсоемким... и просто глупым

  • Пример Forta, по-видимому, предназначен только для однолистовых книг.

Заранее спасибо.

Гэри

-- обновление: вместо использования тегов я переключился на функции в сценарии. Нет использования объекта запроса. вся cf реализация решения POI Cleaner следует... фактический код

<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> 

person user3005033    schedule 18.11.2013    source источник


Ответы (1)


Действие просто неудачно названо. Согласно документам: update – добавляет новый лист в существующий файл XLS. Вы не можете использовать действие uppdate [sic] для изменения существующего листа в файле.

чтобы заставить это работать, я прибегнул к

Если вы не ограничиваетесь только cfspreadsheet, вы сможете «обновить» лист, прочитав файл с помощью Чтение таблицы. Затем удалите лист и добавьте/создайте его заново.

Технически вы можете пропустить процесс удаления/восстановления и просто изменить существующий лист на месте. Просто прочитайте в файле установите лист, который вы хотите изменить как активный, затем внесите изменения. Однако, в зависимости от модификаций, часто бывает проще просто удалить лист и вставить новый.

person Leigh    schedule 18.11.2013
comment
Спасибо... нашел список функций. Добавлен актуальный код. (сбросил теги/запрос перешел к скрипту... - person user3005033; 18.11.2013
comment
Да, я обнаружил, что тег подходит только для базовых дампов. Что-нибудь более сложное, и вам обычно лучше использовать функции. Кстати, вы можете опубликовать окончательный код в виде отдельного ответа, чтобы он был более заметен. - person Leigh; 18.11.2013