上面的代码中这一行报错: return Math.max(acc, row.rows.length);Cannot read properties of undefined (reading 'length')
时间: 2023-08-25 14:04:41 浏览: 46
非常抱歉,我之前的代码中的错误导致了这个问题。问题出现在尝试获取 `row.rows.length` 的时候,其中 `row.rows` 为 `undefined`。这个问题可以通过添加条件判断来解决。
请使用以下修改后的代码:
```javascript
function exportToExcel(data) {
var fileName = 'data.xls';
var longestRowLength = data.reduce(function (acc, row) {
if (row.rows && row.rows.length) { // 添加条件判断
return Math.max(acc, row.rows.length);
} else {
return acc;
}
}, 0);
var table = '<table>';
table += '<thead><tr>';
for (var i = 0; i < data.length; i++) {
table += '<th>' + data[i].title + '</th>';
}
table += '</tr></thead>';
table += '<tbody>';
for (var i = 0; i < longestRowLength; i++) {
table += '<tr>';
for (var j = 0; j < data.length; j++) {
var rowData = (data[j].rows && data[j].rows[i]) || ''; // 添加条件判断
table += '<td>' + rowData + '</td>';
}
table += '</tr>';
}
table += '</tbody>';
table += '</table>';
var link = document.createElement('a');
link.href = 'data:application/vnd.ms-excel,' + encodeURIComponent(table);
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
```
在修改后的代码中,我们添加了条件判断来确保只有在 `row.rows` 存在且具有长度时才获取其长度,并使用空字符串处理未定义的数据。
希望这次能满足你的需求!如果还有其他问题,请随时提问。