Редактирование Excel документа через new ActiveXObject('Excel.Application')

Привет. 

TS 3.x

Есть документ Excel(.xls) открытый вот так:

var Excel = new ActiveXObject('Excel.Application');
Excel.Workbooks.Open(filePath);

У кого есть опыт работы, подскажите как:

1. Добавить пустой рядок в качестве 1-го(подвинув остальные вниз).

2. Заполнить ячейки этого рядка(припустим первых 10), интересует именно доступ.

3. Настроить ширину колонок.



*VS Debugger виснет при попытке взглянуть в объект.

**Нормальной документации не нашел, если у кого-то завалялась - буду благодарен

Нравится

2 комментария

Проще всего в Excel запустить запись макроса, проделать всё вышеупомянутое, а потом изучать сгенерированный код на VBA и переводить его на синтаксис JS.

Потыкал и нашел.

 

try {
        var excel = new ActiveXObject('Excel.Application');
        var workBooks = excel.Workbooks.Open(TempFileName.Value);
        var excelSheet = workBooks.Worksheets(1);
        excelSheet.Activate();
        excelSheet.Range('A1:K1').Insert(-4121);
        excelSheet.Range('A1').Formula = 'Ячейка А1';
        excelSheet.Range('B1').Formula = 'Ячейка А2 ';
    //  ......
        excelSheet.Range('K1').Formula = 'Ячейка К1';
        excelSheet.Columns('A:K').AutoFit();
        workBooks.Save();
 
    }
    finally {
        excelSheet = System.EmptyValue;
        workBooks = System.EmptyValue;
        excel.Quit();
        excel = System.EmptyValue;
        CollectGarbage();
    }
    

1.Добавление пустого рядка было сделано через Insert со смещением вниз.

2. Заполнение через метод Formula об. Range

3. Использовал AutoFit так как изменять значения Width или ColumnWidth не давало(read-only).

*Ещё обратите внимание на блок finally при таких действиях процесс excel.exe который был создан убивается.

Показать все комментарии