This question tương tự, nhưng không đánh dấu bất kỳ khả năng nào để xuất hiện xuất dữ liệu. Suy nghĩ?Có thể sử dụng bất kỳ tính năng HTML5 nào để xuất bộ nhớ cục bộ sang Excel không?
Trả lời
Tôi nghĩ rằng bạn đang hiểu lầm câu trả lời cho câu hỏi mà bạn liên kết đến, nó cho thấy bạn sử dụng một URI dữ liệu phục vụ xuất khẩu.
Excel là một mục tiêu phức tạp để nhắm đến vì định dạng tệp tự nó là nhị phân (or OOXML). Nếu bạn chỉ muốn một cái gì đó mở ra trong Excel thì bạn có thể xuất CSV đơn giản hơn thành URI dữ liệu. Các mã sau đây là một chút khó khăn và sẵn sàng và chỉ được thử nghiệm trong Firefox:
function exportData() {
var data = '';
for (var i=1;i<=2;i++) {
var sep = '';
for (var j=1;j<=4;j++) {
data += sep + document.getElementById(i + '_' + j).value;
sep = ',';
}
data += '\r\n';
}
var exportLink = document.createElement('a');
exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data));
exportLink.appendChild(document.createTextNode('test.csv'));
document.getElementById('results').appendChild(exportLink);
}
Dưới đây là đánh dấu trang:
<input type="number" id="1_1" value="2">,
<input type="number" id="1_2" value="1">,
<input type="number" id="1_3" value="4">,
<input type="number" id="1_4" value="3">
<br>
<input type="number" id="2_1" value="1">,
<input type="number" id="2_2" value="2">,
<input type="number" id="2_3" value="3">,
<input type="number" id="2_4" value="4">
<br>
<button onclick="exportData()">Export as CSV</button>
<div id="results"></div>
Demo here. Nhấp vào nút bạn nhận được liên kết, nhấp vào liên kết và bạn sẽ nhận được một tệp. Thay đổi các giá trị, nhấp lại vào liên kết và bạn sẽ nhận được một tệp khác. Firefox làm cho tôi chọn Excel mỗi lần mở nó nhưng tôi không biết đó là cấu hình của tôi hay là một vấn đề chung.
CSV in Excel 2007 http://www.boogdesign.com/images/external/data-uri-csv.png
Như tôi đã nói, chỉ được thử nghiệm trong Firefox, và nó sẽ chỉ làm việc trong các trình duyệt có hỗ trợ Data URIs. Bạn cũng cần window.btoa() function hoặc triển khai base64 encoder của riêng mình.
Tôi không biết bất kỳ thư viện Javascript nào có thể tạo tệp Excel. Nhưng bạn có thể chỉ cần xuất nó dưới dạng HTML hoặc CSV - lưu ý rằng Javascript không thể tạo tệp (chưa), nhưng bản nháp làm việc của HTML phục vụ cho điều này: http://www.w3.org/TR/file-writer-api/
Excel khá tốt khi đọc các bảng được tạo bằng HTML, vì vậy bạn có thể chỉ cần làm điều đó và mở tệp HTML bằng Excel.
Bạn có thể tạo một tập tin để tải về sử dụng Downloadify: https://github.com/dcneiner/Downloadify
Tôi đang nghĩ đến việc chỉ sao chép/dán người dùng. Đây không phải là một sản phẩm thương mại, chỉ là một tiện ích, vì vậy có lẽ đó là ok để yêu cầu của folks. Tôi đã hy vọng cho một HTML5 API whizbang rằng ... Tôi dunno, đã làm phép thuật hoặc một cái gì đó ... –
1 để yêu cầu ma thuật :) – technomalogical
Nếu bạn chuyển tiêu điểm của bạn sang phía máy chủ, bạn có thể xuất ra một loại MIME tùy chỉnh lựa chọn của bạn. CSV là một cách đơn giản để xuất dữ liệu sang Excel. –
Thú vị. Khi tôi mở kết quả trong Excel, tôi nhận được hai ô, A1 ('2,1,4,3') và A2 ('1,2,3,4'). Vì vậy, nó nhận ra hàng nhưng không phải cột. Cảm ơn bạn đã bắt đầu (và bạn nói đúng về câu hỏi được liên kết, câu trả lời không hoàn toàn đúng để xuất) –
@AlexMcp Có thể nó phụ thuộc vào phiên bản Excel bạn đang sử dụng? Tôi đã thêm một ảnh chụp màn hình về những gì tôi thấy trong Excel 2007 – robertc
Thật tuyệt vời khi biết điều này. Cảm ơn :-) –