【问题标题】:powershell missing leading 0 in excelpowershell在excel中缺少前导0
【发布时间】:2016-08-02 13:00:33
【问题描述】:

我花了两天时间来解决为什么一个 4 位数字通过我的 5 位正则表达式传递。当您在 Excel 中打开 CSV 时,它会显示 4 位数字“1234”,当您在记事本中打开它时,您会看到“01234”。有没有办法在 powershell 中执行 export-csv 以保持正确的格式?我知道格式与 Excel 认为它应该是什么样子有关。我希望在 powershell 中找到一个解决方案,您可以在其中强制使用数字格式。

如果第一个数字是 0,是否可以在前面加上特殊字符,使第一个 0 在 excel 中可见?

【问题讨论】:

  • 您可以通过在单元格值前面加上撇号来转义 Excel 中的数字格式:'01234 在 Excel 中将显示为 01234
  • 嗨,Mathias,这确实有帮助,但是....现在我也看到了单元格中的单引号,例如:'01234。有没有更好的方法来做到这一点或接受单元格中会有一个 '?
  • 最好的方法是在 Excel 中应用格式 - CSV 没有格式层,不要再强加一个 :) @987654321 @
  • 这就是我的结论。我希望能够自动化该过程而无需返回和格式化。我可能会做的是写入 Excel,它只需要更多的编码,而不仅仅是 export-csv。感谢您的帮助。

标签: excel csv powershell


【解决方案1】:

(如果这仍未解决或可以帮助其他人解决此问题)

Excel 的WorkBook.OpenText 在这里很有帮助。您可以指定Column Data Type

$xlSession = New-Object -ComObject excel.application

$file = Get-Item "C:\MyDir\MyFile.csv

$xlsession.WorkBooks.OpenText(`
                    $file.FullName,    # Filename
                    2,            # Origin
                    1,            # StartRow
                    1,            # DataType
                    1,            # TextQualifier
                    $false,       # ConsecutiveDelimiter
                    $false,       # Tab
                    $false,       # Semicolon
                    $true,        # Comma
                    $false,       # Space
                    $false,       # Other
                    $false,       # OtherChar


                    # FieldInfo; the important part.
                    # I am telling Excel that columns 1, 2 and 3 are type 2 (Text)
                    # More info: https://msdn.microsoft.com/en-us/library/office/ff193030.aspx

                    @(@(1,2),@(2,2),@(3,2))         

)

$workBook = $xlsession.ActiveWorkbook

$workBook.SaveAs("C:\MyDir\Somefile.xlsx")

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多