• Авторизация


Вставка таблиц в Word из Jscript 23-10-2008 14:13 к комментариям - к полной версии - понравилось!


Недавно писал пост, как выкинуть текст в ворд из xml файла в шаблон документа.

 

Но есть проблема с таблицами, нашел в сети пример и настроил его для своих нужд.

function PlayWithWord()
{
    //JScript
    //Создаем объект для работы с Вордом
    var wrd = new ActiveXObject("Word.Application");

    wrd.Documents.Add(); //Создаем новый документ
    adoc = wrd.ActiveDocument; //Получаем указатель на активный документ
    myRange = adoc.Range(Start = 0, End = 0); //Указатель на область в документе

    //Активизируем Ворд
    wrd.Visible = true;
    wrd.Activate();

    //это типа демо таблица
    //первый вложенный массив  это названия столбцов
    //второй их ширина
    var webTable = [
        ["Название","Ед.изм","Цена","Количество","Стоимость"],
        ["260","40","60","40","60"],
        ["Трубка металлическая","шт.","2300","2","4600"],
        ["Трубка металлическая","шт.","2300","2","4600"],
        ["Трубка металлическая","шт.","2300","2","4600"],
        ["Трубка металлическая","шт.","2300","2","4600"],
        ["","","","","Всего:25000 руб. 00 коп"]
    ];

    AddTable(wrd, myRange, webTable);
}

//вставляет таблицу в заданный диапазон
function AddTable(wrd, myRange, webTable)
{

    //Создаем таблицу с одной строкой и тремя столбцами
    //Задаем ширину столбцов
    tb0 = adoc.tables.Add(Range = myRange , NumRows = 1, NumColumns = webTable[0].length /*3*/);
    for(var i=0; i<webTable[0].length;i++)
        tb0.Columns(1+i).Width = parseInt(webTable[1][i]);

    //Заполняем заголовок таблицы
    for(var i=0; i<webTable[0].length;i++)
        tb0.Cell(1, i+1).Range.InsertAfter(webTable[0][i]);
    intIndex = 2; //Счетчик строк

    for(var i=2; i<webTable.length; i++)
    {
        Show(webTable[i]);
    }

    //Ну и сама функция для вывода строк
    //создаем строку, перебираем ее столбцы и вставляем значения из массива, должна совпадать длина массива и количество столбцов
    function Show(rowArr)
    {
      tb0.Rows.Add();
      for(var i=0; i<rowArr.length; i++)
      {
        tb0.Cell(intIndex, i+1).Range.InsertAfter(rowArr[i]);
      }
      intIndex++;
    }
}

 

Теперь надо как то объединить вывод в шаблон по закладка с выводом таблиц, плюс проблема с форматированием таблиц.

Наверно надо не создавать таблицу а менять количество столбцов, для отформатированной таблицы, в общем надо изучать матчасть дальше


вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Вставка таблиц в Word из Jscript | Чарубаэль - Дневник | Лента друзей Чарубаэль / Полная версия Добавить в друзья Страницы: раньше»