我有一個HTML頁面上有一些圖形。我想要做的是編寫一個加載JavaScript函數,它將讀取Excel工作表中的值,將它們存儲在變量中,並將其用於html頁面。我的問題是,是否有任何JavaScript API處理Excel表格,如從excel表單元格解析值?Javascript Excel工作表
1
A
回答
2
我在javascript寫了一個XLSX解析器。 https://gist.github.com/trevordixon/3375836
/*
Relies on jQuery, underscore.js, Async.js (https://github.com/caolan/async), and zip.js (http://gildas-lormeau.github.com/zip.js).
Tested only in Chrome on OS X.
Call xlsxParser.parse(file) where file is an instance of File. For example (untested):
document.ondrop = function(e) {
var file = e.dataTransfer.files[0];
excelParser.parse(file).then(function(data) {
console.log(data);
}, function(err) {
console.log('error', err);
});
}
*/
xlsxParser = (function() {
function extractFiles(file) {
var deferred = $.Deferred();
zip.createReader(new zip.BlobReader(file), function(reader) {
reader.getEntries(function(entries) {
async.reduce(entries, {}, function(memo, entry, done) {
var files = ['xl/worksheets/sheet1.xml', 'xl/sharedStrings.xml'];
if (files.indexOf(entry.filename) == -1) return done(null, memo);
entry.getData(new zip.TextWriter(), function(data) {
memo[entry.filename.split('/').pop()] = data;
done(null, memo);
});
}, function(err, files) {
if (err) deferred.reject(err);
else deferred.resolve(files);
});
});
}, function(error) { deferred.reject(error); });
return deferred.promise();
}
function extractData(files) {
var sheet = $(files['sheet1.xml']),
strings = $(files['sharedStrings.xml']),
data = [];
var colToInt = function(col) {
var letters = ["", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
var col = $.trim(col).split('');
var n = 0;
for (var i = 0; i < col.length; i++) {
n *= 26;
n += letters.indexOf(col[i]);
}
return n;
};
var Cell = function(cell) {
cell = cell.split(/([0-9]+)/);
this.row = parseInt(cell[1]);
this.column = colToInt(cell[0]);
};
var d = sheet.find('dimension').attr('ref').split(':');
d = _.map(d, function(v) { return new Cell(v); });
var cols = d[1].column - d[0].column + 1,
rows = d[1].row - d[0].row + 1;
_(rows).times(function() {
var _row = [];
_(cols).times(function() { _row.push(''); });
data.push(_row);
});
sheet.find('sheetData row c').each(function(i, c) {
var $cell = $(c),
cell = new Cell($cell.attr('r')),
type = $cell.attr('t'),
value = $cell.find('v').text();
if (type == 's') value = strings.find('si t').eq(parseInt(value)).text();
data[cell.row - d[0].row][cell.column - d[0].column] = value;
});
return data;
}
return {
parse: function(file) {
return extractFiles(file).pipe(function(files) {
return extractData(files);
});
}
}
})();
1
您可以嘗試使用ActiveXObject從Excel中讀取數據。有各種實用方法。
看看這個鏈接。
http://www.roseindia.net/javascript/javascriptexamples/javascript-get-excel-file-data.shtml
+0
耶,但activeX只能用於IE對不對?我想要Safari上的東西 – 2012-03-02 11:34:37
相關問題
- 1. Excel工作表
- 2. 的Javascript下載到Excel工作表
- 3. 在excel工作表
- 4. 從Excel工作表
- 5. 插入從另一個Excel工作表中的Excel工作表
- 6. 打印Excel工作表/工作簿
- 7. 隱藏工作簿/工作表Excel VBA
- 8. Excel工作表與C#
- 9. 選擇工作表excel
- 10. Excel宏,合併工作表
- 11. Windows窗體+ Excel工作表
- 12. Excel複製工作表
- 13. Excel工作表公式
- 14. Excel工作表不保存
- 15. 如何在Excel工作表
- 16. 創建MS Excel工作表
- 17. Excel工作表解析
- 18. vbscript excel創建工作表
- 19. Excel工作表錯誤
- 20. 鎖定Excel工作表
- 21. Excel VBA激活工作表
- 22. Excel VB - insivible工作表
- 23. Excel的VBA:工作表
- 24. asp.net中的Excel工作表?
- 25. C#訪問Excel工作表
- 26. 的AppleScript從Excel工作表
- 27. Excel工作表索引
- 28. Matlab的:在Excel工作表
- 29. 如何從Excel工作表
- 30. Excel工作表不導出
這裏有很多問題。 1.你知道你不能在用戶的本地機器上獲得一個文件,所以他們將不得不上傳到服務器? 2.很大程度上取決於這是一個xls還是xlsx ... – 2012-03-01 12:10:43
還有一個奇怪的想法!你爲什麼不把電子表格上傳到服務器端,並用服務器端語言支持的體面的庫讀取它? – Philippe 2012-03-01 12:14:14
爲什麼不「保存爲:xml」,然後解析數據以檢索您想要的信息。 – 2012-03-01 12:16:36