【问题标题】:Powershell append data into existing XLSX with multiple sheetsPowershell 将数据附加到具有多个工作表的现有 XLSX
【发布时间】:2019-01-16 08:02:46
【问题描述】:

刚接触 Powershell 并希望学习。

目标: 尝试从 .csv 文件中取出数据(每行 14 个数据单元格)并导入到现有的 .xlsx 文件中,从第二行列 (A2:N2) 开始。

.xlsx 文件有 4 张纸,我要编辑的那张被标记为“数据”。数据表/选项卡有 18 列,前 14 列是我希望导入的数据从行开始的位置(A2:N2-> End 会有所不同)。

寻找一种自动生成报告的方法,方法是使用自动生成的文件 (.csv) 中的数据填充 A-N 行。

带有一些值的“数据”选项卡示例:

当前过程是打开一个 xls 文件并复制/粘贴到从 A2 开始的单元格中。希望自动执行此操作并自动生成报告 -> 电子邮件 .xls 文件,我将其转换为 .csv 并使用以下代码删除一些不需要的标题和额外信息:

Function ExcelCSV ($File)
{
    $pwd = "C:\Users\..." #Removed local path
    $excelFile = "$pwd\" + $File + ".xls"
    $Excel = New-Object -ComObject Excel.Application
    $Excel.Visible = $false
    $Excel.DisplayAlerts = $false
    $wb = $Excel.Workbooks.Open($excelFile)
    foreach ($ws in $wb.Worksheets)
    {
        $ws.SaveAs("$pwd\" + $File + ".csv", 6)
     }
    $Excel.Quit()
 }
$TestFile = (Get-Content .\FileName.xls) -replace 'null',''
$TestFile | Out-File Test.xls
$FileName = "Test"
ExcelCSV -File $FileName
Get-Content Test.csv | Select-Object -Skip 2 | Select-Object -SkipLast 3 | Set-Content Test2.csv 

【问题讨论】:

  • 您可能会发现使用 VBA 而不是 PowerShell 会更容易。您决定使用 PowerShell 是否有特定原因?

标签: excel powershell csv xlsx


【解决方案1】:

请使用出色的 ImportExcel powershell 模块ImportExcelModule 使用它您只需这样做即可实现您的目标

$csv=Import-CSV <YourImportParameters>  
$csv|Export-Excel -Path $pwd -Show  -StartRow 2 -StartColumn 2 -sheet $sheetname

上面将获取对象并将其导出到 excel 文件 $pwd,sheet $sheetname 从第二列的第二行开始
如果您以后想通过邮件将其发送给某人 - Powershell 也可以帮助您在 1 行中做到这一点:)

【讨论】:

  • 这是一个很棒的模块:)
  • @DougFinke 我的脚本不断地使用您的模块向 SQL 提供各种 excel。效果很好!谢谢你:)
  • 不客气,很高兴它有帮助。无论何时它对你有用,如果你能发布简短的 sn-ps 关于你如何使用它,那就太好了github.com/dfinke/ImportExcel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2020-07-24
  • 2019-04-16
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多