您好,我正在使用一个简单的PowerShell脚本将CSV文件转换为xlsx文件。但是,Excel忽略列表分隔符,将所有数据放在第一列中。
- 列表分隔符配置正确(开始>控制面板>区域和语言选项->其他设置)
- 从Windows资源管理器手动打开文件工作正常。
但是,使用以下命令在Excel中打开CSV时:
Function Convert-toExcel {
$xl = new-object -comobject excel.application
$xl.visible = $true
$Workbook = $xl.workbooks.OpenText("$csvfile")
$Worksheets = $Workbooks.worksheets
}
所有的东西都放在第一栏……
根据PowerShell的说法,列表分隔符配置正确:
(Get-Culture).textinfo
ListSeparator : ,
4条答案
按热度按时间ogsagwnx1#
尝试将
DataType
参数添加到OpenText
方法。它似乎需要神奇的论据。VBA:
Workbooks.OpenText filename:="DATA.TXT", dataType:=xlDelimited, tab:=True
我猜在PowerShell中它接受散列,所以:
$xl.Workbooks.OpenText(@{Filename = $CSVFile; dataTyype = "xlDelimited", other = $true; otherchar=':' })
然而,我目前没有办法测试这一点。
nuypyhwy2#
以下脚本适用于我。我在功能上所做的一个更改是将Excel.Visible设置为False。
我根据以下网页上的信息汇编了这篇文章:
http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/09/copy-csv-columns-to-an-excel-spreadsheet-by-using-powershell.aspx
https://social.technet.microsoft.com/Forums/en-US/919459dc-3bce-4242-bf6b-fdf37de9ae18/powershell-will-not-save-excel-file?forum=winserverpowershell
brc7rcf03#
您的原始代码运行良好。我猜您在EXCEL中的分隔符只是不是“,”。我已经看过很多次这样的错误了。PS文化与此无关
lo8azlld4#
使用`t(制表符的PowerShell代码)代替,(逗号)。
Excel在打开时默认使用文本到列的导入,并以制表符作为分隔符。