【问题标题】:Export data from table to excel, how to stop excel from auto converting the value?将数据从表导出到excel,如何阻止excel自动转换值?
【发布时间】:2019-06-20 04:50:35
【问题描述】:

我目前正在开发一个项目的导出功能。 (我是刚毕业的学生)

我已经成功地完成了这个功能。我现在面临的问题是excel会自动转换(或格式化?)我的初始值到另一种形式。我可以知道是否有任何解决方案可以阻止 excel 执行自动转换为值?

场景:原号码为7778362019198430,导出后显示 7.77836E+15

这是我的导出函数的代码

function fnExcelReport(tableID) {

            var downloadLink;
            var dataType = 'application/vnd.ms-excel';
            var tableSelect = document.getElementById(tableID);
            var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

            // Specify file name
            var d = new Date();
            var todaysDate = d.getFullYear() + '-' + d.getMonth() + '-' + 
                d.getDate();
            filename = 'CashCard_' + todaysDate + '.xls';

            // Create download link element
            downloadLink = document.createElement("a");

            document.body.appendChild(downloadLink);

            if(navigator.msSaveOrOpenBlob){
                var blob = new Blob(['\ufeff', tableHTML], {
                    type: dataType
                });
                navigator.msSaveOrOpenBlob( blob, filename);
            }else{
                // Create a link to the file
                downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

                // Setting the file name
                downloadLink.download = filename;

                //triggering the function
                downloadLink.click();
            }

        }

预期的输出应该和原来的值一样是7778362019198430,但是excel会自动转换,导出后的输出会自动转换成7.77836E+15。

有什么办法可以阻止吗?非常感谢。

【问题讨论】:

    标签: javascript c# jquery html export-to-excel


    【解决方案1】:

    我不知道如何在 javascript 中执行此操作。如果您将导出功能移至 c#,则可以通过设置单元格样式来完成,例如

    sheet.Cells[i].Attributes.Add("style", "textmode");
    

    【讨论】:

      【解决方案2】:

      这种格式“7.77836E+15”的数字称为科学计数法,表示7.77836×1015

      This StackExchange 线程说,如果您右键单击单元格并单击“设置单元格格式”并选择“数字”,则可以阻止 Excel 使用科学计数法。

      您的代码似乎有很多我们看不到的地方,但我怀疑您将能够在创建文档时格式化单元格。

      你可能想试试这个。

      【讨论】:

      • 是的,你是对的。我知道我可以手动重新格式化excel文件中的输出。我正在寻求一种解决方案,阻止 exel 将原始值转换为基于科学记数法的值。我希望它始终自动显示原始值。有什么解决办法吗?顺便说一句,非常感谢您的回复。
      • 我们无法在您生成 excel 电子表格的位置看到您的代码,因此我们不知道您是如何执行此操作的,因此我们无法为您提供该答案,请尝试查找文档以了解您使用的任何方法是否它是一个插件或其他。
      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多