/ / Яка різниця між CSV та XLSX - excel, powershell, csv

Яка різниця між CSV і XLSX - excel, powershell, csv

Я намагаюся отримати кілька списків у висновку з використаннямТаблиця Excel, але люди кажуть "Це не те саме, що використовується з CSV, тому що кожен рядок є індивідуальним об'єктом", "Використовуйте списки для отримання потрібного результату", і це ускладнює ситуацію, оскільки я не знаю, що робити зараз . Я використовую PowerShell. Чи може хтось пояснити мені різницю з утилітами XLSX та CSV від імпорту на прикладі Якщо можливо? Я переглянув деяку документацію, але це не допомогло мені зрозуміти.

$csv = Import-Csv .test1.csv -Delimiter ";"

$ref = @($csv.Column1)
foreach ($row in $csv) {
foreach ($col in "Column2", "Column3", "Column4") {
if ($ref -contains $row.$col) { $row.$col = "" }
}
}

$csv | Select-Object Column1,Column2,Column3,Column4 | where Column1 -ne ""
$csv | Select-Object Column1,Column2,Column3,Column4 | where Column2 -ne ""

очікуваний вихід

Стовпчик1 Стовпчик2 Стовпчик3 Стовпчик4 -------------- ------- ------- інфра-98 інфра-852 інфра-44 інфра-99 інфра-62 інфра-85 інфра-8 інфра-23 інфра-8 інфра-852 інфра-10 інфра-55 інфра-70   Колонка1 Стовпчик2 Стовпчик3 Стовпчик4 ------- ------- ------- ------- інфра-1 інфра-85 інфра-2 інфра-99 інфра-98 інфра-55 інфра-44 інфра-23 інфра-2 інфра-1 інфра-10 інфра-62 інфра-70

Відповіді:

1 для відповіді № 1

Контекст втрачається з попередніх запитань, коли ви імпортуєте .CSV за допомогою Import-CSV cmdlet. Тоді кожен рядок CSV стає об’єктом PowerShell. Те саме було б, якщо ви імпортували XLSX за допомогою ImportExcel модуль. Структура вже не така, як файл CSV або файл XLSX. Це вже не електронна таблиця, а колекція предметів.

Візьміть простий .CSV файл

Col1,Col2
a,b
c,a

Якби ви імпортували це за допомогою Import-CSV PowerShell, тоді ви отримаєте масив з двох об’єктів. Що можна краще зобразити так:

@(
[pscustomobject]@{
Col1 = "a"
Col2 = "b"
}
[pscustomobject]@{
Col1 = "c"
Col2 = "a"
}
)

Таким чином, це два окремих об'єкти із властивостями із заголовків стовпців.

Якщо ви встановите властивість одного з цих об'єктів у порожній рядок, тоді, коли ви експортуєте та перетворюєте об'єкти назад у рядки. У вас буде порожня "комірка".

Як обійти це - прочитати свої колонки вяк окремі масиви, то виконайте логіку порівняння для цих масивів, потім створіть абсолютно нову колекцію об'єктів з цих оновлених масивів, а потім експортуйте. Які інші люди відповіли на ваші інші запитання.