excel 此单元格中的数字格式为文本或前面带有撇号- Powershell

zi8p0yeb  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(177)

我有一个在Powershell中制作的应用程序,它从数据库中读取结果并将数据假脱机到Excel表中。当数字是整数时,我没有任何问题,但是当我试图假脱机小数时,下一个错误出现:“该单元格中的数字被格式化为文本或前面有撇号”。
我尝试了数据插入后的下一个:

$range1 = "F2:G20"
$range2 = "K2:L20"
$WorkSheet.Columns.item('F').NumberFormat = "#.##0,00"
$WorkSheet.Columns.item('G').NumberFormat = "#.##0,00"

$range = $WorkSheet.Range($range1).Copy()
$x = $WorkSheet.Range($range2).Select()
$WorkSheet.UsedRange.PasteSpecial(-4163,-4142)

字符串
但是没有成功.
我也试过:

$WorkSheet.Columns.item('F').NumberFormat = "#.##0,00"
$WorkSheet.Columns.item('G').NumberFormat = "#.##0,00"
$Tr = $WorkSheet.Range('K2','L20')
$WorkSheet.Range('F2','G20').Copy()
$Tr.Select()
$Tr.PasteSpecial(-4163)


值仍作为文本而不是十进制数粘贴.
非常重要:我正在尝试将值粘贴到Excel表中。

dwthyt8l

dwthyt8l1#

好吧,经过太多的时间,我找到了一个解决方案,最好称之为工作:
1.在Excel工作簿中创建一个与SQL表的列同名的表,然后手动插入一些虚拟值。
1.从数据库中获取数据信息的方式如下:
$dt1 = SQLCommand -File_Path $QueryReplacedFullPath -服务器“tnsdw”-名称“TMS_SalesDW”-输出$dt_table1 = $dt1.Tables[0] $WorkSheet = $Workbook. xml| where-object {$_.Name -eq $SheetName} $WorkSheet.Activate()
1.删除在下一个代码之前手动插入的虚拟数据:
$StartRow = 2 $FinalRow = 200 $null = $WorkSheet.Range(“A$($StartRow):A$($FinalRow)”)$WorkSheet.usedrange.offset($StartRow,0).specialcells(12).重新排序.删除()
1.使用以下命令在Excel表格中插入数据:
为([Int]$m = 0; $m -lt $dt_table1.Rows.Count; $m++){对于([Int]$r = 0; $r -lt $dt_table1.Columns.Count; $r++){ $incolumn = $r + 1; $inrow = $inheaderlenght + 2 + $m; if($incolumn -gt 4){ $Workbook.ActiveSheet.Cells.Item($inrow,$incolumn)= [System.Convert]::ToDecorder($dt_table1.xml [$m].ItemArray[$r])} else { $Workbook.ActiveSheet.Cells.Item($inrow,$incolumn)=$dt_table1.xml [$m].ItemArray[$r].ToString()} }
请注意,我只在我希望为decimal的列中将值转换为decimal。

zlwx9yxi

zlwx9yxi2#

您正在将格式设置应用于源列范围,而不是目标列范围,由于您只复制值而不是格式(.PasteSpecial -4163),因此在您未指定所需格式的情况下,将采用目标格式。如果希望在目标中使用相同的格式设置,则必须为列K2、L20指定该格式设置,或应用.PasteSpecial xlPasteValuesAndNumberFormats

相关问题