Excel把我的号码变成浮动

我有一点ASP.NET数据导出到Excel中的数据,但我注意到,它导致了一个特定的领域时导出。

例如我在数据网格的列中有类似于89234010000725515875的值,但是在导出时,它将其变成89234 + 19。

有任何Excel格式,将带回我的原始数字? 谢谢。

Excel并不是真的搞砸了这个领域。 有两件事情正在发生:

  1. Excel以科学记数法格式化大量数据。 所以“89234010000725515875”变成“8.9234E + 19”或“8.9234×10 ^ 19”。
  2. 数字“89234010000725515875”的大小超出了Excel用来存储值的精度。 Excel存储您的号码为“89234010000725500000”,所以你失去了最后五位数字。

根据你的需要,你可以做两件事情之一。

您的第一个select是将格式从“常规”更改为“0”(小数位数为零)。这会给您“89234010000725500000”,因此您将失去精确度,但是您可以对数字进行计算。

第二种方法是将单元格格式化为文本“@”,或者在行的开始处用撇号粘贴字段,以强制为文本。 你会得到所有的数字,但你将无法做的价值计算。

我希望这有帮助。

您可以向该字段添加空格,然后在将其导出到Excel时,将其视为string:

lblTest.Text = DTInfo.Rows(0).Item("Test") & " " 

祝你好运。

下面是用于.NET的SpreadsheetGear的C#源代码。 由于SpreadsheetGear API与Excel的API类似,您应该可以轻松地将此代码调整到Excel的API以获得相同的结果。

如果你想自己试试,可以在这里下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC

 using System; using SpreadsheetGear; namespace Program { class Program { static void Main(string[] args) { // Create a new workbook and get a reference to A1. IWorkbook workbook = Factory.GetWorkbook(); IWorksheet worksheet = workbook.Worksheets[0]; IRange a1 = worksheet.Cells["A1"]; // Format A1 as Text using the "@" format so that the text // will not be converted to a number, and put the text in A1. a1.NumberFormat = "@"; a1.Value = "89234010000725515875"; // Show that the formatted value is Console.WriteLine("FormattedValue={0}, Raw Value={1}", a1.Text, a1.Value); // Save the workbook. workbook.SaveAs(@"c:\tmp\Text.xls", FileFormat.Excel8); workbook.SaveAs(@"c:\tmp\Text.xlsx", FileFormat.OpenXMLWorkbook); } } }