4

Недавно я узнал, что PowerShell можно использовать для написания документов Excel. Первое, что я подумал об этом, было (по крайней мере, частично) автоматизировать разбор некоторых отчетов CSV, с которыми мне регулярно приходится работать.

Основная работа, которую мне нужно сделать, выглядит примерно так:

  1. Создайте книгу Excel с двумя таблицами.
  2. Скопируйте заголовки столбцов из файла CSV в строку 1 на обоих листах.
  3. Для каждой строки в CSV, которая удовлетворяет определенному условию (например, значение в столбце R равно «Не помещать в лист 1»), добавьте строку в лист Excel 2.
  4. Каждая строка в 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.

0