【问题标题】:How to save file without overwrite excel file如何在不覆盖excel文件的情况下保存文件
【发布时间】:2016-12-20 13:49:08
【问题描述】:

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

我必须从 csv 文件生成新信息到 excel 文件, 但我还有其他人,手动创建了我的脚本总是覆盖的选项卡。

脚本如下所示:

$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"

【问题讨论】:

    标签: excel powershell csv epplus


    【解决方案1】:

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

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

    然后,向此工作簿添加一个新工作表,以与当前相同的方式将 csv 加载到此新工作表中,然后再次保存工作簿。

    【讨论】:

    • 感谢您的回答,它正在工作,但脚本仍会删除我在工作表中的现有数据。我只想更新 CM 选项卡关于 csv 文件中的新信息,但就像我之前说的 - 我有 manually 创建的选项卡,我需要它们。
    • 抱歉重复发帖,但您有权利。现在它工作得几乎完美。几乎是因为当我打开 excel 文件时看到这样的消息:Excel was able to open the file by repairing or removing the unreadable content.,但在删除像 AutoFilter from table 这样的功能后一切正常!使用循环 if 检查文件是否存在可能会很好。
    • @KamilK:EPPlus 仅支持有限数量的 Excel 功能,并且某些功能可能不是 100%。当您手动将数据添加到文档中时,您可以轻松插入与 EPPlus 不兼容的内容,因此您必须非常小心。
    • 可能问题与代码有关。我只改变这个:#$ExcelPackage = New-Object OfficeOpenXml.ExcelPackage #$Worksheet = $ExcelPackage.Workbook.Worksheets.Add("CM") 到:$ExcelPackage = New-Object OfficeOpenXml.ExcelPackage($FileNameExcel) $Worksheet = $ExcelPackage.Workbook.Worksheets[1]
    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多