Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
Excel将我的数字转换为浮点数_Excel_Datagrid_Formatting_Floating Point_Export - Fatal编程技术网

Excel将我的数字转换为浮点数

Excel将我的数字转换为浮点数,excel,datagrid,formatting,floating-point,export,Excel,Datagrid,Formatting,Floating Point,Export,我有一些ASP.NET代码可以将datagrid中的数据导出到Excel中,但我注意到它在导出时会弄乱特定字段 例如,在datagrid中的一列中,我的值大约为8923401000725515875,但在导出时,它会将其转换为89234+19 是否有任何Excel格式可以恢复我的原始编号?谢谢。Excel并没有把这个领域搞得一团糟。有两件事正在发生: Excel以科学记数法格式化大量数字。因此,“8923401000725515875”变为“8.9234E+19”或“8.9234 x 10^19

我有一些ASP.NET代码可以将datagrid中的数据导出到Excel中,但我注意到它在导出时会弄乱特定字段

例如,在datagrid中的一列中,我的值大约为8923401000725515875,但在导出时,它会将其转换为89234+19


是否有任何Excel格式可以恢复我的原始编号?谢谢。

Excel并没有把这个领域搞得一团糟。有两件事正在发生:

  • Excel以科学记数法格式化大量数字。因此,“8923401000725515875”变为“8.9234E+19”或“8.9234 x 10^19”
  • 数字“8923401000725515875”的大小超过Excel用于存储值的精度。Excel将您的号码存储为“8923401000725500000”,因此您将丢失最后五位数字
  • 根据你的需要,你可以做两件事中的一件

    您的第一个选项是将格式从“常规”更改为“0”(小数点后零位的数字)。这将为您提供“8923401000725500000”,因此您将失去精度,但您将能够对数字执行计算

    第二个选项是将单元格格式设置为文本“@”,或者在行首粘贴带撇号的字段,以强制将值设置为文本。您将获得所有数字,但无法计算值

    我希望这能有所帮助。

    下面是实现这一点的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);
            }
        }
    }
    

    您可以在字段中添加空格,然后将其导出到Excel时,将其视为字符串:

    lblTest.Text = DTInfo.Rows(0).Item("Test") & " "
    
    祝你好运