我目前正在从事项目的导出功能。 (我是应届毕业生)
我已经成功完成了该功能。我现在面临的问题是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。
有什么办法阻止它吗?非常感谢。
答案 0 :(得分:0)
这种格式为“ 7.77836E + 15”的数字称为科学计数法,表示7.77836×10 15 。
This StackExchange线程说,如果右键单击单元格并单击“设置单元格格式”,然后选择“数字”,则可以阻止Excel使用科学计数法。
看起来您的代码中有很多我们看不到,但是我怀疑您在创建文档时可以格式化单元格。
您可能想尝试一下。
答案 1 :(得分:0)
我不知道如何在javascript中执行此操作。如果将导出功能移至c#,则可以通过将单元格样式设置为
来完成sheet.Cells[i].Attributes.Add("style", "textmode");