Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将excel格式的0.00%设置为0.0000十进制值_C#_.net_Vb.net_Excel_Excel Interop - Fatal编程技术网

C# 如何将excel格式的0.00%设置为0.0000十进制值

C# 如何将excel格式的0.00%设置为0.0000十进制值,c#,.net,vb.net,excel,excel-interop,C#,.net,Vb.net,Excel,Excel Interop,我们需要将一些数据导出到excel,这很好,数据以百分比表示,因此我提供 cell.NumberFormat = "0.00%" 导出值的数据类型为decimal,因此上述格式工作正常 但当值为0.00000000000000000 excel无法将格式设置为该格式,因此当我们打开导出的excel文件时,它会显示 Excel已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃。 修复的记录:来自/xl/worksheets/sheet.xml部分的单元格信息 所有值为0的单元格都会显示

我们需要将一些数据导出到excel,这很好,数据以百分比表示,因此我提供

cell.NumberFormat = "0.00%"
导出值的数据类型为decimal,因此上述格式工作正常

但当值为
0.00000000000000000
excel无法将格式设置为该格式,因此当我们打开导出的excel文件时,它会显示

Excel已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃。 修复的记录:来自/xl/worksheets/sheet.xml部分的单元格信息

所有值为0的单元格都会显示一个标签,上面写着-

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


当值类似于
0.02344343
excel时,将其格式化为
2.34%
,格式为带2位小数的百分比;我不知道为什么它不能为0值提供格式。

将其读入双精度,然后格式化并写回。这样我就不会有任何错误

Dim ws As Excel.Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
Dim d As Double

d = ws.Range("C14").Value
ws.Range("C14").NumberFormat = "0.00%"
ws.Range("C14").Value = d
我不清楚你的数据是否已经在工作表中。如果不是,则将数据从源放入double

d = Val("0.00000000000000000")
ws.Range("C14").NumberFormat = "0.00%"
ws.Range("C14").Value = d

真正地令人惊讶对此有什么解释吗。。格式很好,但仍然显示相同的错误。。。所以修复错误仍然存在,但修复后excel似乎还可以。不确定这到底是为什么。Excel在假设您想要什么时会做一些奇怪的事情。它主要与日期有关,但我在百分比方面也遇到了这些问题。这个错误可能来自其他原因,因为我在保存并重新打开工作簿后没有得到它。