Вышеупомянутый ответ отлично подходит для YUI до версии 3.4. Однако таблица данных была реорганизована начиная с версии 3.5. Мой конвертер включает значения ячеек в двойных кавычках, избегает двойных кавычек в значениях ячеек и обрабатывает один уровень вложенности столбцов, если он существует.
Вот скрипка, который демонстрирует мой преобразователь: 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;
}
Вы знаете, я удивлен, как быстро это. –
... И он сохраняет сортировку. Потрясающие! –
Любая идея, как заставить всплывающее окно открыть диалог сохранения/загрузки? Вероятно, требуется изменить тип содержимого всплывающего документа или так, что я понимаю, что это может быть невозможно, но если у вас есть способ сделать это, это будет просто здорово. – Meligy