将csv导入excel并指定单元格格式

我试图导入多个CSV文件到他们自己的选项卡在1 Excel工作簿。 例如,我有一个16位数的帐号(1234567890123456),它以excel的forms显示为一个指数(1.23457E + 15) 。 当我查看单元格中的实际数字时(1234567890123450)。 我假设如果我把它列入文本之前,它将工作,但我不知道如何做到这一点。 这是我的代码。

$excel = New-Object -ComObject excel.application $excel.visible = $False $excel.displayalerts=$False $workbook = $excel.workbooks.add() $sheets = $workbook.sheets $sheetCount = $Sheets.Count $mySheet = 1 $mySheetName = "Sheet" + $mySheet $s1 = $sheets | where {$_.name -eq $mySheetName } $s1.Activate() If($sheetCount -gt 1) { #Delete other Sheets $Sheets | ForEach { $tmpSheetName = $_.Name $tmpSheet = $_ If($tmpSheetName -ne "Sheet1"){$tmpSheet.Delete()} } } #import csv files $files = dir -Path $csvDir*.csv ForEach($file in $files){ If($mySheet -gt 1){$s1 = $workbook.sheets.add()} $s1.Name = $file.BaseName $s1.Activate() $s1Data = Import-Csv $file.FullName $s1data | ConvertTo-Csv -Delimiter "`t" -NoTypeInformation | Clip $s1.cells.item(1,1).Select() $s1.Paste() $mySheet ++ if (test-path $file ) { rm $file } } $workbook.SaveAs($excelTMGPath) $workbook.Close() $workbook = $null #$excel.quit() while ([System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($excel)) {} $excel = $null 

尝试

如果$s1指向正确,

 $s1.cells.item(1,1).NumberFormat="@" 

如果这不起作用,在必要时使用NumberFormat 。 使用你喜欢的格式。

将文件扩展名的名称从.csv更改为.txt。 在代码中调整你的文件名,

 $files = dir -Path $csvDir*.txt