如何在不覆盖excel文件的情况下保存文件

时间:2016-12-20 13:49:08

标签: excel powershell csv epplus

我在EPPlus.dll脚本中使用Powershell将csv文件转换为xlsx文件,但我不知道如何在不覆盖现有数据的情况下保存文件。

我必须从csv文件生成新信息到excel文件, 但是我有其他的,manualy创建了我的脚本总是覆盖的标签。

脚本看起来像这样:

$FileNameCSV = "$env:WORKSPACE/file.csv"
$FileNameExcel = "\\folder\file.xlsx "

$DLLPath = "D:\EPPlus.dll"
[Reflection.Assembly]::LoadFile($DLLPath) | Out-Null

$Format = New-object -TypeName OfficeOpenXml.ExcelTextFormat
$Format.Delimiter = ","

$Format.TextQualifier = '"'
$Format.Encoding = [System.Text.Encoding]::UTF8
$Format.SkipLinesBeginning = '0'
$Format.SkipLinesEnd = '1'

$TableStyle = [OfficeOpenXml.Table.TableStyles]::Medium1

$ExcelPackage = New-Object OfficeOpenXml.ExcelPackage 
$Worksheet = $ExcelPackage.Workbook.Worksheets.Add("CM")

$null=$Worksheet.Cells.LoadFromText((Get-Item $FileNameCSV),$Format,$TableStyle,$true) 

$Worksheet.Cells[$Worksheet.Dimension.Address+1].AutoFitColumns()

$Worksheet.Column(3).Style.Numberformat.Format = "dd/mm/yyyy";

$ExcelPackage.SaveAs($FileNameExcel)

Write-Host "CSV File $FileNameCSV converted to Excel file $FileNameExcel"

1 个答案:

答案 0 :(得分:0)

您需要通过将名称传递给构造函数来打开名为$FileNameExcel现有文件,可能是这样的:

  $ExcelPackage = New-Object OfficeOpenXml.ExcelPackage($FileNameExcel)

然后,将新工作表添加到此工作簿,将csv加载到此新工作表中,方法与当前相同,并再次保存工作簿。