В: Я хочу преобразовать Excel в CSV, но Excel содержит многострочные данные в ячейке вместе с ";" как разделитель. Желаемый результат - файл csv с символом "|" как разделитель столбцов, но "," как разделитель данных в той же ячейке. Я не могу использовать Excel, поэтому использую модуль ImportExcel.
Введите формат Excel (прикрепленный файл в конце вопроса): -
Row1# c1# c2# c3# c4#
Row2#
Row3#
Row4# HEADER1 HEADER2 HEADER3
Row5# 04.05 test & t test TEST
Row5# 04.06.01 test test TEST
Row5# 04.07.01 test test
Row5# 04.10.02 test & t
Строка # представляет собой строку Excel, а С # представляет столбец, а ЗАГОЛОВОК # представляет заголовок столбцов. Как видно, строки 1-3 и первый столбец Excel пусты. Текст второго и четвертого столбца многострочный, но находится в одной ячейке (в той же строке Row5).
Затем я попытался импортировать Excel для каждого объекта и заменить символ новой строки на "," наконец экспортировать его в csv, используя (export-csv) с "|" как разделитель.
Сценарий, который я сделал, выглядит следующим образом: -
$test = Import-excel -NoHeader -StartRow(4) test.xlsx
$test | foreach-object {
if($_.HEADER1) {
$_.HEADER1 = $_.HEADER1.replace("\n",", ")
$_.HEADER1 = $_.HEADER1.replace("&","& ")
}
}
$test | Export-csv new-test.csv -Delimiter '|' -NoTypeInformation
Выходной CSV-ФАЙЛ Я ПОЛУЧИ: -
Row1# c1# c2# c3#
Row2# HEADER1|HEADER2|HEADER3
Row3# 04.05 test & t
Row4# 04.06.01 test test
Row5# 04.07.01 test test
Row6# 04.10.02 test & t
Row7# test|TEST
Row8# TEST
Как видно, текст после разделителя ";" при вводе переходит в другой столбец, а многострочная строка по-прежнему разбирается на отдельные строки. Я хочу, чтобы вся эта многострочная строка была объединена в одну с разделителем «,» вместе с текстом после «';» делиметр.
Желаемый CSV-ФАЙЛ: -
Row1# c1# c2#
Row2# HEADER1|HEADER2|HEADER3
Row3# 04.05 test & t,04.06.01 test test,04.07.01 test test,04.10.02 test & t|test|TEST,TEST
Я пробовал много вопросов из stackoverflow, связанных с этим, но по какой-то причине ни одно из существующих решений, похоже, не работает для меня.
Прилагаю образец файла Excel, который я пытаюсь преобразовать.
$test = @('line1', 'line2')
- person lloyd   schedule 29.05.2019