Powershell使用多张表将数据附加到现有XLSX中

时间:2018-08-08 23:54:03

标签: excel powershell csv xlsx

Powershell的新手,希望学习。

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

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

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

“数据”标签的示例包含一些值:

Sample of "Data" tab with some values

当前过程是打开一个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 

1 个答案:

答案 0 :(得分: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也可以帮助您在一行中做到这一点:)