【发布时间】:2015-04-14 07:12:38
【问题描述】:
我使用 powershell 导入了一个逗号分隔的 csv 文件。 我被导入并看起来应该如此。问题是,单元格包含公式。 比如=20+50+70。除非我单击顶部字段中的输入,否则不会计算它。 另一个问题是,一些单元格包含像 =50,2+70,5 这样的数字。这些细胞excel根本不明白。它无法计算它们,除非我删除 ,或用点 (.) 替换它。但这不是一种可能。 我该如何解决这个问题? 使用 powershell 导入 csv 文件:
[threading.thread]::CurrentThread.CurrentCulture = 'en-US'
$wbpath=Join-Path "$psscriptroot" 'file.xlsx'
$importcsv=Join-Path "$psscriptroot" 'file.csv'
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$xl.Workbooks.OpenText($importcsv)
$xl.DisplayAlerts = $false
[threading.thread]::CurrentThread.CurrentCulture = 'en-US'
$xl.ActiveWorkbook.SaveAs($wbpath,51)
$xl.Quit()
while([System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)){'released'}
[threading.thread]::CurrentThread.CurrentCulture = 'en-US'
是必要的,否则我会出错,因为我的系统区域不是我们。
谢谢。
CSV 样本:
name1.name1.name1,"=20","=7,65","=20,01"
name2.name2.name2,"=20+10","=4,96+0,65","=20,01+10"
name3.name3.name3,"=20","=4,96+0,88","=21,01+11"
【问题讨论】:
-
CSV 不包含公式,那么您的意思是某些单元格包含这些字符串吗?我不确定除非我点击顶部字段中的输入 是什么意思。你有一些示例输入和预期输出吗?这将使这更容易确定
-
CSV 文件看起来像这样 Name,=20+20,=20,=1+80,5+9,=20。等等。 Excel 应该解释并计算它。就像我导入 csv maualle 或手动输入数据一样。顶部字段是指 excel 中的编辑字段,位于顶部。
-
如果我将它输入到 excel 中,我得到 120,7。这没什么特别的。就像我说的。只有当我使用 powershell 导入它时它才不起作用。
-
我也遇到了同样的问题。就我而言,我最初是通过使用 Powershell 直接创建 excel 文件开始的。但是,这样做会慢 50 倍以上。使用 Excel 对象时,处理 800 条记录需要 10 分钟。使用 CSV 对象需要几秒钟。我发现在 powershell 中使用 Excel 对象创建超链接是延迟的主要原因。我的解决方法是创建 CSV,将字段设置为“Z = hyperlink(“url”,“text”)”,然后在 Excel 中查找/替换“Z=”到“=”,每次数据都需要完成正在更新。
-
您可能想尝试将小数点分隔符设置为 ',' (Get-Culture).NumberFormat.NumberDecimalSeparator = ','
标签: excel powershell