Excel Import
Excel Import는 SheetJS 기능을 이용하여 처리할 수 있습니다. 엑셀 다운로드 후 해당 엑셀파일을 편집하여 Import 해보세요.
SheetJS에 대한 내용은 아래 링크를 참조하세요.https://github.com/SheetJS/js-xlsx
Tip
- 엑셀 export시 리얼그리드의 footer는 제외하고 export하세요.(엑셀 import시 footer부분까지 가져오기 때문에 footer영역을 제외하는 코드가 필요해짐)
- 엑셀 import시 엑셀의 헤더명이 json 객체의 속성명이 되기 때문에 리얼그리드의 필드명을 한글로 맞춰주시는게 좋습니다.
<input type="file" name="excelFile" id="xlf"/>
$("#xlf").bind("change", handleXlsFile);
function excelExport() {
gridView.exportGrid({
type: "excel",
target: "local",
fileName: "gridExportSample.xlsx",
footer: "hidden",
done: function () { //내보내기 완료 후 실행되는 함수
alert("done excel export")
}
});
}
function fixdata(data) {
var o = "", l = 0, w = 10240;
for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}
function handleXlsFile(e) {
var files = e.target.files;
var i, f;
for (i = 0, f = files[i]; i != files.length; ++i) {
var reader = new FileReader();
var name = f.name;
reader.onload = function (e) {
var data = e.target.result;
//var workbook = XLSX.read(data, { type: 'binary' });
var arr = fixdata(data);
workbook = XLSX.read(btoa(arr), { type: 'base64' });
process_wb(workbook);
/* DO SOMETHING WITH workbook HERE */
};
//reader.readAsBinaryString(f);
reader.readAsArrayBuffer(f);
}
}
function process_wb(wb) {
var output = "";
output = to_json(wb);
var sheetNames = Object.keys(output);
if (sheetNames.length > 0) {
var colsObj = output[sheetNames][0];
if (colsObj) {
dataProvider.fillJsonData(output, { rows: sheetNames[0] })
}
}
}
function to_json(workbook) {
var result = {};
workbook.SheetNames.forEach(function (sheetName) {
var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName], {});
if (roa.length > 0) {
result[sheetName] = roa;
}
});
return result;
}