Câu trả lời ở trên hoạt động tốt cho YUI lên phiên bản 3.4. Tuy nhiên, bảng dữ liệu đã được cấu trúc lại bắt đầu bằng phiên bản 3.5. Trình biến đổi của tôi bao quanh các giá trị ô trong dấu nháy kép, thoát khỏi dấu ngoặc kép trong các giá trị ô và xử lý một mức cột làm tổ, nếu nó tồn tại.
Đây là một fiddle thể hiện chuyển đổi của tôi: http://jsfiddle.net/geocolumbus/AFB3h/3/
// Function to convert a DataTable with zero or one nested columns to CSV
function convertToCSV(myDataTable) {
var col,
colIndex = 0,
colKey,
rowString,
ret,
cell,
headerString = "";
while (col = myDataTable.getColumn(colIndex++)) {
if (col.children == null) {
headerString += '"' + col.key + '",';
} else {
Y.Array.each(col.children, function (child) {
headerString += '"' + child.key + '",';
});
}
}
ret = headerString.replace(/,$/, '\n');
Y.Array.each(myDataTable.data.toJSON(), function (item) {
colIndex = 0;
rowString = "";
while (col = myDataTable.getColumn(colIndex++)) {
if (col.children == null) {
cell = item[col.key].replace(/"/g, "\\\"");
rowString += '"' + cell + '",';
} else {
Y.Array.each(col.children, function (child) {
cell = item[child.key].replace(/"/g, "\\\"");
rowString += '"' + cell + '",';
});
}
}
ret += rowString.replace(/,$/, '') + "\n";
});
return ret;
}
Nguồn
2013-09-14 15:22:37
Bạn biết đấy, tôi ngạc nhiên khi thấy cách nhanh chóng mà là. –
... Và nó bảo tồn phân loại. Tuyệt vời! –
Bất kỳ ý tưởng làm thế nào sau đó để làm cho popup mở một hộp thoại lưu/tải xuống? Có thể yêu cầu thay đổi loại nội dung của tài liệu bật lên hoặc như vậy, điều mà tôi nhận ra có thể không khả thi, nhưng nếu bạn có cách để làm điều đó, điều đó sẽ rất tuyệt. – Meligy