-1

我正在生成一个电子表格,有时数据以 NaN 形式出现。不是问题

但是,当我“SaveAsExcel”并在 Excel 2016 中打开电子表格时,我得到“我们发现 'reportname' 中的某些内容存在问题。您希望我们尽可能多地尝试恢复吗?如果您相信此工作簿的来源,单击是”单击是,我知道 Excel 能够使用以下内容打开文件:

“修复的记录:来自 /xl/worksheets/sheet1.xml 部分的单元格信息”

以及一个指向日志文件的链接,该文件显示... 没有

error072200_01.xmlErrors were detected in file MyFileName.xlsx'Repaired Records: Cell information from /xl/worksheets/sheet1.xml part

现在,如果我删除工作表上的 NaN,我没有问题。任何人都知道我该如何解决这个问题?

4

1 回答 1

0

我已经重现了这个问题并提出了一个解决方案 - 遍历工作表的所有单元格并检查单元格的值是否被NaN验证为数字,如果是,请将值更改为“”。

当然,您可以将解决方案更改为更适合您需求的解决方案。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Kendo UI Snippet</title>

    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.621/styles/kendo.common.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.621/styles/kendo.rtl.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.621/styles/kendo.silver.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.621/styles/kendo.mobile.all.min.css"/>

    <script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2017.2.621/js/jszip.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2017.2.621/js/kendo.all.min.js"></script>
</head>
<body>
  
    <button id="export">Export to Excel</button>
    <div id="spreadsheet"></div>
    <script>
        $("#spreadsheet").kendoSpreadsheet({
            sheets: [{
                name: "Food Order",
                mergedCells: [
                    "A1:G1"
                ],
                rows: [{
                    height: 70,
                    cells: [{
                        value: "My Company", fontSize: 32, textAlign: "center"
                    }]
                }, {
                  cells: [{
                    value: NaN,
                    textAlign: "center",
                    validation: {
                      from: "1",
                      to: "2",
                      comparerType: "between",
                      dataType: "number",
                      messageTemplate: "Number should match the validation."
                    }
                  }]
                }],
            }],
          	excelExport: function(e) {
              	e.workbook.sheets[0].rows.forEach(function(row) {
                		row.cells.forEach(function(cell) {
                    		if (isNaN(cell.value) && cell.validation && cell.validation.dataType === "number") {
                            cell.value = "";
                        }
                    });
                });
              	console.log(e.workbook.sheets[0]);
            }
        });
        $("#export").click(function(e) {
            var spreadsheet = $("#spreadsheet").data("kendoSpreadsheet");
            spreadsheet.saveAsExcel();
        });
    </script>

    <!-- Load JSZIP library to enable Excel export -->
    <script src="http://kendo.cdn.telerik.com/2017.2.621/js/jszip.min.js"></script>
</body>
</html>

于 2017-06-26T08:37:49.650 回答