【发布时间】:2018-10-05 13:43:22
【问题描述】:
对于一个我打算这样做的项目:
- 使用 powershell 打开一个 excel 文件。 (完成)
- 使用与网站的数据连接刷新表。 (完成)
- 将刷新的 Excel 保存在同一路径中。(完成)
- 将该文件转换为用于加载到 SQL Server 的 CSV(史诗般的失败)
Powershell 使用逗号分隔符保存文件,而不是使用分号:
#Refresh Excel
$app = New-Object -comobject Excel.Application
$app.Visible = $false
$wb = $app.Workbooks.Open("C:\test\test.xlsm")
$wb.Name
$wb.RefreshAll()
$wb.Save()
$wb.Close()
$app.Quit()
#Export To CSV
Function ExportWSToCSV ($excelFileName, $csvLoc)
{
$excelFile = "C:\test\" + $excelFileName + ".xlsm"
$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open($excelFile)
foreach ($ws in $wb.Worksheets)
{
$n = $excelFileName + "_" + $ws.Name
write-host $n
write-host ($csvLoc + $n + ".csv")
$ws.SaveAs($csvLoc + $n + ".csv",6)
}
$E.Quit()
}
ExportWSToCSV -excelFileName "test" -csvLoc "C:\test\new\"
我还需要如何将数据批量插入 SQL Server 的表中...
提前致谢!
【问题讨论】:
-
所以基本上,您正在尝试将
XLSX转换为CSV。看看this对你有没有价值。 -
我已经这样做了,问题是我想要分号作为分隔符,而不是逗号。
-
这是 Excel 问题,不是 Powershell。 Excel CSV 导出是相当可怕的,你不能选择分隔符,编码很容易搞砸。如果分隔符只是问题,您可以在 Excel 设置中将小数分隔符更改为逗号,它将使用分号作为字段分隔符。否则,我会从表格的每一行创建自定义
PSObject,并使用Export-CsvCmdlet 创建 CSV 文件。
标签: sql-server excel powershell csv sqlbulkcopy