Недавно я узнал, что PowerShell можно использовать для написания документов Excel. Первое, что я подумал об этом, было (по крайней мере, частично) автоматизировать разбор некоторых отчетов CSV, с которыми мне регулярно приходится работать.
Основная работа, которую мне нужно сделать, выглядит примерно так:
- Создайте книгу Excel с двумя таблицами.
- Скопируйте заголовки столбцов из файла CSV в строку 1 на обоих листах.
- Для каждой строки в CSV, которая удовлетворяет определенному условию (например, значение в столбце R равно «Не помещать в лист 1»), добавьте строку в лист Excel 2.
- Каждая строка в CSV, которая не предназначена для листа Excel 2, должна быть добавлена к листу Excel 1.
Шаг 1 достаточно прост - я нашел несколько руководств в Интернете, чтобы помочь мне начать там. Я также уверен, что могу справиться с условной логикой, необходимой для шагов 3 и 4, самостоятельно, основываясь на прошлом опыте PowerShell. Проблема, для которой мне трудно найти решение, - записать все данные на листы.
На самом деле я еще не написал ни одного сценария PowerShell для Excel, но каждое руководство, которое я видел, содержит только инструкции по написанию отдельных ячеек, а не целых строк сразу. Есть ли более простой способ сделать это?
Некоторые вещи, которые меня заинтересуют, если они существуют:
- Некоторые средства копирования всей строки из файла CSV на лист Excel без необходимости циклически проходить по отдельным ячейкам в строке.
- Некоторый способ копирования всей строки из одного файла CSV в другой без необходимости циклически проходить по отдельным ячейкам, а также команда (или достаточно короткий сценарий) для импорта всего файла CSV в рабочую таблицу Excel.
- В крайнем случае: цикл for (или аналогично короткий блок скрипта) должен использоваться вместо метода записи всей строки. Это должно быть в состоянии определить, где остановить копирование ячеек в строке, не переходя к последнему столбцу (я думаю, что это XFD в наши дни), в то же время изящно обрабатывая пустые ячейки в середине строки.
Помимо выяснения вышеизложенного, очень сложная часть моего сценария будет состоять в том, чтобы убедиться, что он может эффективно работать с исходными CSV-файлами, длина которых может быть тысячами (возможно, десятками тысяч) строк.
Окончательный сценарий должен быть совместим с Windows 7, PowerShell 2.0 и Excel 2010.