load excel and jqgrid demo
perfect
by ysuper
HTML
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/css/ui.jqgrid.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/jquery.jqgrid.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.3/xlsx.full.min.js"></script>
<input type="file" id="file">
<table id="list2"></table>
<div id="pager2"></div>
<input type="button" id="button" style="display: none;" value="下一步">
JavaScript
function sum_total() {
var total_qty = 0
var total_prize = 0
var gridData = $("#list2").getRowData();
gridData.forEach(function(rowData) {
total_qty = total_qty + parseFloat(rowData.Qty)
total_prize = total_prize + parseFloat(rowData.採購金額)
});
/* console.log(total_qty)
console.log(total_prize) */
}
$("#button").click(function() {
var gridData = $("#list2").getRowData();
var postData = JSON.stringify(gridData);
if (postData.indexOf('\\') != -1) {
alert('「採購價格」尚未輸入完成!')
event.preventDefault();
return
}
/* console.log(gridData) */
console.log(postData)
})
$('#file').change(function(e) {
$("#list2").jqGrid('GridUnload');
var files = e.target.files;
var records_array = []; // 存储获取到的数据
var fileReader = new FileReader();
// 以二进制方式打开文件
fileReader.readAsBinaryString(files[0]);
fileReader.onload = function(ev) {
try {
var data = ev.target.result,
workbook = XLSX.read(data, {
type: 'binary'
}) // 以二进制流方式读取得到整份excel表格对象
} catch (e) {
console.log('文件类型不正确');
return;
}
// 表格的表格范围,可用于判断表头数量是否正确
var fromTo = '';
// 遍历每张表读取
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
// console.log(fromTo); //打印表格范围
records_array = records_array.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
/*使用XLSX.utils.sheet_to_json方法解析表格对象返回相应的JSON数据 */
break; // 如果只取第一张表,就取消注释这行
}
}
//console.log(records_array); //打印获取的数据
if (records_array.length > 1000) {
alert("資料筆數不得大於1000!")
return
} else {
$("#button").show();
}
$("#list2").jqGrid({
/* colNames: ['SN','品號','品名','商品描述','ABC等級','最近進價-本幣單價','售價定價一','售價定價三','匯入單價','庫別','組成用量','預計可用','Qty','最小包裝數','原始料號','產地','備註','組合件售價'], */
colNames: ['SN', '品號', '品名', '銷售單價', '採購單價', 'Qty', '庫別', '銷售金額', '採購金額', '備註'],
colModel:...