gpt4 book ai didi

excel - 如何在未安装 Excel 的情况下使用 Powershell 将 .xls 转换为 .csv

转载 作者:行者123 更新时间:2023-12-02 01:42:06 28 4
gpt4 key购买 nike

有没有办法在不使用 Powershell 安装 Excel 的情况下将 .xls 转换为 .csv?

我无权访问特定机器上的 Excel,因此在尝试时出现错误:

New-Object -ComObject excel.application

New-Object : Retrieving the COM class factory for component with CLSID {00000000-0000-0000-0000-000000000000} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

最佳答案

转发

根据您系统上已经安装的内容,您可能需要 Microsoft Access Database Engine 2010 Redistributable使此解决方案起作用。这将使您可以访问提供程序:“Microsoft.ACE.OLEDB.12.0”

免责声明 :结果并没有给人留下深刻的印象,有更多背景的人可以使这个答案更好,但是就这样。

代码

$strFileName = "C:\temp\Book1.xls"
$strSheetName = 'Sheet1$'
$strProvider = "Provider=Microsoft.ACE.OLEDB.12.0"
$strDataSource = "Data Source = $strFileName"
$strExtend = "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"
$strQuery = "Select * from [$strSheetName]"

$objConn = New-Object System.Data.OleDb.OleDbConnection("$strProvider;$strDataSource;$strExtend")
$sqlCommand = New-Object System.Data.OleDb.OleDbCommand($strQuery)
$sqlCommand.Connection = $objConn
$objConn.open()

$da = New-Object system.Data.OleDb.OleDbDataAdapter($sqlCommand)
$dt = New-Object system.Data.datatable
[void]$da.fill($dt)

$dataReader.close()
$objConn.close()

$dt

创建到 Excel 文件的 ODBC 连接 $strFileName .您需要知道您的工作表名称并填写 $strSheetName这有助于构建 $strQuery .然后使用多个对象创建连接并从工作表中提取数据作为 System.Data.DataTable .在我的测试文件中,使用一张填充表,我有两列数据。运行代码后 $dt 的输出是:
letter number
------ ------
a 2
d 34
b 0
e 4

然后你可以拿那张 table 然后 ExportTo-CSV
$dt | Export-Csv c:\temp\data.csv -NoTypeInformation

这是基于从以下方面收集的信息构建的:
  • Scripting Guy
  • PowerShell Code Repository
  • 关于excel - 如何在未安装 Excel 的情况下使用 Powershell 将 .xls 转换为 .csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976854/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com