如何解决使用';'将csv转换为xlsx分隔符
我需要使用 powershell 5 中的 Excel 模块将我的 csv 文件转换为 xlsx 文件。我已经尝试过,下面的代码可以工作,但速度非常慢(csv 中的 4000 行需要大约 3 小时)。我想提高我的速度,但如果我使用任何其他变体将数据发送到 Export-Excel
cmdlet,它不起作用(文件已创建但无法打开)。文件中的分隔符只能是 ';'
somecode......
$out = Import-Csv -Path "D:\psstudio\projects\admins_list.csv" -Header "Имя ПК","Состав группы локальных администраторов","Пользователь/Группа","Доменная/Локальная","DN" -Delimiter ';' -Encoding Default `
| Convertto-Csv -Delimiter ';' | Convertfrom-Csv -Delimiter ';'
$out | ForEach-Object{ Export-Excel -InputObject $_ -Path "D:\resultlocadm($(get-date -Format d)).xlsx" -AutoSize -TableName "localadmins" -Append }
内部文件数据示例:
HOLDING-009-157;Стандартные учетные записи;;;CN=HOLDING-009-157,OU=Компьютеры,DC=mydomain,DC=com
SH-TEL-KYIV-P02;ACCESS_DENIED;;;CN=SH-TEL-KYIV-P02,DC=com
TZ-WMS2018-ESB;ACCESS_DENIED;;;CN=TZ-WMS2018-ESB,DC=com
squid-dnepr-01;ACCESS_DENIED;;;CN=squid-dnepr-01,DC=com
SH-TEL-KYIV-P01;ACCESS_DENIED;;;CN=SH-TEL-KYIV-P01,DC=com
MARKET-204-074;Стандартные учетные записи;;;CN=MARKET-204-074,DC=com
MARKET-28-2-101;Стандартные учетные записи;;;CN=MARKET-28-2-101,OU=АП28А,DC=com
MARKET-28-7-038;Стандартные учетные записи;;;CN=MARKET-28-7-038,DC=com
MARKET-N-94144;NO_PING;;;CN=MARKET-N-94144,DC=com
MARKET-28-6-054;Стандартные учетные записи;;;CN=MARKET-28-6-054,DC=com
MARKET-28-6-161;Стандартные учетные записи;;;CN=MARKET-28-6-161,DC=com
MARKET-28-6-161;pro;User;WinNT://mydomain/MARKET-28-6-161/pro;CN=MARKET-28-6-161,DC=com
MARKET-28-6-022;Стандартные учетные записи;;;CN=MARKET-28-6-022,DC=com
MARKET-28-6-022;odenbah;User;WinNT://mydomain/odenbah;CN=MARKET-28-6-022,DC=com
解决方法
这完全没问题,除非你想用 C 或 C++ 编写一些东西来改进它,否则我不知道如何改进它:)
$out = Import-Csv -Path "D:\psstudio\projects\admins_list.csv" -Header "Имя ПК","Состав группы локальных администраторов","Пользователь/Группа","Доменная/Локальная","DN" -Delimiter ';' -Encoding Default
这两个没有做任何事情:| Convertto-Csv -Delimiter ';' | Convertfrom-Csv -Delimiter ';'
从 ImportExcel v7+
开始(如果我没记错的话)你可以像这样使用 -InputObject
,这会让事情变得更快:
Export-Excel -InputObject $out -Path "D:\resultlocadm($(get-date -Format d)).xlsx" -AutoSize -TableName "localadmins"
编辑:
PS C:\> $out = Import-Csv -Path "$home\documents\test\input\csv.csv" -Header "Имя ПК","DN" -Delimiter ';' -Encoding Default
PS C:\> $out|get-random -count 3
Имя ПК : SH-TEL-KYIV-P01
Состав группы локальных администраторов : ACCESS_DENIED
Пользователь/Группа :
Доменная/Локальная :
DN : CN=SH-TEL-KYIV-P01,OU=Компьютеры,DC=mydomain,DC=com
Имя ПК : MARKET-28-7-038
Состав группы локальных администраторов : Стандартные учетные запиÑи
Пользователь/Группа :
Доменная/Локальная :
DN : CN=MARKET-28-7-038,OU=ÐП28Ð,DC=com
Имя ПК : squid-dnepr-01
Состав группы локальных администраторов : ACCESS_DENIED
Пользователь/Группа :
Доменная/Локальная :
DN : CN=squid-dnepr-01,DC=com
PS C:\> Import-Module importexcel
PS C:\> Export-Excel -InputObject $out -Path "$home\documents\test\input\test.xlsx" -AutoSize -TableName "localadmins"
PS C:\> ii "$home\documents\test\input\test.xlsx"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。