【问题标题】:Force open CSV with Column Data Format = TEXT in Excel (Powershell)在 Excel (Powershell) 中强制打开列数据格式 = TEXT 的 CSV
【发布时间】:2018-11-19 13:46:23
【问题描述】:

我有这个使用 Export-CSV 生成的 CSV 文件。一切都很好,但在 Excel 中打开时显示如下,因为单元格未格式化为 TEXT:

我想强制打开 CSV,并将所有单元格设置为 TEXT,就像您可以使用界面手动执行的操作一样。

有没有办法使用 PowerShell 自动化,在 Excel 中打开 CSV,单元格格式为文本?

【问题讨论】:

  • 不确定它是否能满足您的需求,但肯定值得一看 ImportExcel 模块,因为它是 Excel 中功能最多的模块。
  • 您不能格式化 CSV 文件 [超出使用的分隔符]。这是 CSV 文件定义的一部分。 [grin] 要格式化文件,您必须在导入步骤中通过 COM 自动化执行此操作,或者像 @JamesC 一样执行此操作。推荐并使用 PoSh Excel 模块之一,它可以生成 excel 文件而不是 CSV 文件。
  • 谢谢大家,我会使用这个模块的!
  • @lee_daily,是否可以通过 com 自动化来实现?用单元格的文本格式打开 CSV 吗?

标签: excel powershell csv formatting


【解决方案1】:

您可以使用一个小技巧 - 将您的数据转换为 html,并使用“xls”扩展名保存。例如:

Get-Process | convertto-html | Out-File csv2.xls

打开时会看到警告,点击确定即可。

您可以通过在注册表中添加额外的键来抑制该警告消息:

打开注册表

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security

创建一个名为 ExtensionHardening 且值为 0 的新 DWORD

【讨论】:

    【解决方案2】:

    找到了一个很好的方法来实现它!

    生成 CSV 文件后,以下是如何使用 AutoFit 列宽和单元格的 TEXT 格式自动将其加载到 Excel 中:):

    $Fichier = "PATH_TO_CSV.csv"
    $objExcel = New-Object -ComObject Excel.Application
    $WorkBook = $objExcel.Workbooks.Open($Fichier)
    $WorkSheet = $WorkBook.worksheets.item(1)
    
    $objExcel.Visible = $true
    
    $Range = $worksheet.UsedRange.Cells
    $range.NumberFormat = "@"
    
    $WorkSheet.Columns("A:B").AutoFit()
    

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2018-04-20
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多