Powershell的新手,希望学习。
目标: 尝试从.csv文件(每行14个数据单元)中取出数据并导入到现有的.xlsx文件中,从第二行列(A2:N2)开始。
.xlsx文件有4张纸,我要编辑的那张纸被标记为“数据”。数据表/标签有18列,前14列是我希望从行开始导入的数据(A2:N2->结束会有所不同)。
通过用自动生成的文件(.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
答案 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也可以帮助您在一行中做到这一点:)