将数据从表格导出到Excel,如何阻止excel自动转换值



我目前正在处理一个项目的导出函数。(我是刚毕业的学生(

我已经成功地完成了这个功能。 我现在面临的问题是 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#,则可以通过设置单元格样式来完成

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

这种格式的数字"7.77836E+15"称为科学记数法,它表示 7.77836 × 1015

这个 StackExchange 线程说,如果您右键单击单元格并单击"设置单元格格式"并选择"数字",您可以阻止 Excel 使用科学记数法。

看起来您的代码中有很多我们看不到的内容,但我怀疑您在创建文档时将能够格式化单元格。

你可能想试试这个。

最新更新