问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js中xlsx.utils怎么拿到所有的行

发布网友 发布时间:2022-05-15 08:07

我来回答

2个回答

懂视网 时间:2022-05-15 12:29

这次给大家带来js-xlsx的工具类库xlsxUtils的使用详解,使用js-xlsx的工具类库xlsxUtils的的注意事项有哪些,下面就是实战案例,一起来看一下。

函数说明:

var xlsxUtils = {
 Binary: {
 fixdata(data) { //文件流转BinaryString
  //......
 },
 s2ab(s) { //字符串转字符流
  //......
 }
 },
 _wb: null,//缓存导入时的Workbook 
 _rABS: false,//设置读取方式
 /**
 * @desc 导入根据文件
 * @param {File} f 文件
 * @param {Function} c 回调
 * @return {Object} 回调值
 */
 import(f, c) { //......
 }, /**
 * @desc 根据表Sheet名获取数据
 * @param {String} name 
 * @return {Object} 
 */
 getSheetByName(name) {//
 //......
 }, /**
 * @desc 根据表Sheet索引获取数据
 * @param {Number} index 
 * @return {Object}
 */
 getSheetByIndex(index = 0) { //......
 }, /**
 * @desc 导出
 * @param {Array} data 数据{title1:dataList,title2:dataList....} 
 * @param {String} type 
 * @return {Blob}
 */
 export(data, type) { //......
 }, /**
 * 从数据数组或对象中根据key生成相同key值的对象
 * @param {Object|Array} data 
 * @return {Object}
 */
 readDataHead(data) { //......
 }, /**
 * @desc 格式化数据为Sheet格式
 * @param {Array} json 数据
 */
 format2Sheet(json, n) { //......
 }, /**
 * @desc 格式化数据为Sheet格式
 * @param {Array} sheetData 
 * @param {String} title 
 * @param {Object} wb 
 */
 format2WB(sheetData, title = "mySheet", wb) { //......
 }, /**
 * @desc 将xlsx Workbook 转为blob
 * @param {Array} wb 
 * @param {String} type 类型
 */
 format2Blob(wb, type) { //......
 }, /**
 * @desc 匹配单元格对应的标识
 * @param {Number} n 
 */
 getCharCol(n) { //......
 },
};

示例:

导入示例(在线示例):

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"></script> 
 <script src="./xlsx.utils.js"></script></head><body>
 <input type="file" id="demo" />
 <div id="loadInfo"></div>
 <div>
 <div>
  <label>SheetNames</label>:  <span id="SheetNames"></span>
 </div>
 <div>
  <label id="demoName"></label>(示例):  <span id="demoData"></span>
 </div>
 </div>
 <script>
 var demo = document.getElementById("demo");
 demo.onchange = function () {  let f = this.files[0];  let loadInfo = document.getElementById("loadInfo");  let demoName = document.getElementById("demoName");  let demoData = document.getElementById("demoData");
  loadInfo.innerHTML = "正在读取请骚等";
  demoName.innerHTML = "";
  demoData.innerHTML = "";
  xlsxUtils.import(f, (w) => {  document.getElementById("SheetNames").innerHTML = JSON.stringify(w.SheetNames);
  demoName.innerHTML = w.SheetNames[0];
  demoData.innerHTML = JSON.stringify(xlsxUtils.getSheetByIndex(0));
  loadInfo.innerHTML = "读取完成";
  });
 }; </script></body></html>

导出示例(在线示例)

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>demo</title>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"></script> 
 <script src="xlsx.utils.min.js"></script>
 <script src="saveAs.min.js"> </script></head><body>
 <script>
 var data = [{ 主页: "111", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 主页: "433", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 名称: "22", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 名称: "43", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 店家: "43", 价格: "6800", 数量: "6800", 昵称: "广告主网", }]; </script>
 <button id="down">导出</button>
 <script>
 var down = document.getElementById("down");
 down.onclick = function () {
  data.unshift(xlsxUtils.readDataHead(data));  var blob = xlsxUtils.export({ "Sheet1": data, "Sheet2": [{ "a": "A", "b": "B" }, { "a": 1, "b": "2" }, { "a": 3, "b": 4 }, { "a": 5, "b": 6 }] });
  saveAs(URL.createObjectURL(blob), "aa.xlsx");
 }; </script></body></html>

自定义起始列导出示例(在线示例)

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>demo</title>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"></script> 
 <script src="xlsx.utils.min.js"></script>
 <script src="saveAs.min.js"> </script></head><body>
 <script>
 var data = [{ 主页: "111", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 主页: "433", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 名称: "22", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 名称: "43", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 店家: "43", 价格: "6800", 数量: "6800", 昵称: "广告主网", }]; </script>
 <button id="down">导出</button>
 <script>
 var down = document.getElementById("down");
 down.onclick = function () {
  data.unshift(xlsxUtils.readDataHead(data)); 
  var tmpdata = xlsxUtils.format2Sheet(data, 2);  var tmpWB = xlsxUtils.format2WB(tmpdata, "Sheet1");
  tmpdata = xlsxUtils.format2Sheet([{ "a": "A", "b": "B" }, { "a": 1, "b": "2" }, { "a": 3, "b": 4 }, { "a": 5, "b": 6 }], 4);
  tmpWB = xlsxUtils.format2WB(tmpdata, "Sheet2", tmpWB);  var blob = xlsxUtils.format2Blob(tmpWB);
  saveAs(URL.createObjectURL(blob), "aa.xlsx");
 }; </script></body></html>

多数据合并导出到单表示例(在线示例)

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>demo</title>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"></script> 
 <script src="xlsx.utils.min.js"></script>
 <script src="saveAs.min.js"> </script></head><body>
 <script>
 var data = [{ 主页: "111", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 主页: "433", 名称: "6800", 数量: "6800", 昵称: "广告主网" }, { 名称: "22", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 名称: "43", 商家: "6800", 数量: "6800", 昵称: "广告主网", }, { 店家: "43", 价格: "6800", 数量: "6800", 昵称: "广告主网", }]; </script>
 <button id="down">导出</button>
 <script>
 var down = document.getElementById("down");
 down.onclick = function () {  var d1 = xlsxUtils.format2Sheet([{ "a": "A", "b": "B" }, { "a": 1, "b": "2" }, { "a": 3, "b": 4 }, { "a": 5, "b": 6 }]);  var h=xlsxUtils.readDataHead(data);//读取data的列头数据
  data.unshift(h);//将列头追加到最data的前
  var em={};//用于换行
  Object.keys(h).forEach((v)=>{
  em[v]="";
  });  for(var i=0;i<5;i++){//换5行
  data.unshift(em);
  }  var d2 = xlsxUtils.format2Sheet(data, 3);//3代表从D列开始
  d1=Object.assign(d1,d2); 
  var tmpWB = xlsxUtils.format2WB(d1, "Sheet1"); 
  var blob = xlsxUtils.format2Blob(tmpWB);
  saveAs(URL.createObjectURL(blob), "aa.xlsx");
 }; </script></body></html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

如何使用canvas来制作好用的涂鸦画板

如何使用s-xlsx实现Excel 文件导入和导出(下)

热心网友 时间:2022-05-15 09:37

参考这个方法:
var sheet2arr = function(sheet){
var result = [];
var row;
var rowNum;
var colNum;
var range = XLSX.utils.decode_range(sheet['!ref']);
for(rowNum = range.s.r; rowNum <= range.e.r; rowNum++){
row = [];
for(colNum=range.s.c; colNum<=range.e.c; colNum++){
var nextCell = sheet[
XLSX.utils.encode_cell({r: rowNum, c: colNum})
];
if( typeof nextCell === 'undefined' ){
row.push(void 0);
} else row.push(nextCell.w);
}
result.push(row);
}
return result;
};
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
写论文值得推荐的app 写论文app大全汇总 有啥好用又免费的文献查阅网站吗? 高仿苹果手机关机关不了机?是怎么回事?有那个朋友请告知! 高仿苹果6开机就是白屏黑苹果,关机关不了 怎么把电子相册保存到QQ空间相册 整个乡村音乐史上,最动人的25首歌 写给狗的歌 右侧肢体肌力4级是什么意思 肌力分级的评定标准 肌力4级是什么意思 冒险岛里面,鱼王,暗黑飞龙,肥凤,闹钟,扎昆,蛋龙都要先做什么任务才能进去打的啊? 冒险岛闹钟王 我122 龙神 单刷闹钟第一次刷 为什么大闹钟 有数字 但是上面的血条就是不减 还越来越多 ? 龙4中路明非送给诺诺的极客闹钟里的铃声叫什么名字? 冒险岛闹钟任务!高手进!!! 冒险岛 闹钟问题请教 高校龙中龙中的闹钟是什么 小弟现在90小龙骑,想要打闹钟,但不 知道怎么作前期任务,请知道打人说下?在下先谢谢了 冒险岛龙骑士打闹钟boss需要的敏捷最低是多少啊? [小一]小闹钟(人教版) [小学一年级语文 PPT课件]: 第七课 小闹钟滴滴滴,滴滴滴,小闹钟,声音急, 梦到两头大狮子怎么回事 关于闹钟的笑话 趣味龙小闹没有声音? 如何在非局域网(*)通过或者远程桌面连接某局域网内的某一台电脑 碳含量在钢材中有什么作用? 农作物主要生理功能碳里有什么? 碳、氢、氧营养元素有哪些作用? 碳元素对人体的作用? 碳原子最主要的功能 吃柚子吃完了,拉肚子来月经。吃拉肚子药也吐了,拉肚子有3天。怎么办几天好了? 仓鼠误吃柚子拉肚子怎么办 Q/JJ0039S是什么标准 酸味调味汁可以执行GB2719-2018标准? 调味汁的执行标准是什么 液体复合调味料企业标准怎样制定? 水产调味品检测标准是什么? 豆瓣酱可以用GB31644吗 xlsx.js not does export default name 开封杞县和洛阳栾川各有什么特点?哪个地方更美些呢? (我是栾川的) 开封一般玩几天好? 换乘高铁30分钟够吗 狗脊骨树为何不能繁殖 孝感一日游去哪里好玩 栾川怎么样? 河南开封杞县摆摊卖东西需要交费用吗? 成都东站站内换乘高铁,预留24分钟间隔时间足够吗? 杞县出租车叫车电话 一般什么购买什么样的消毒液? 华为手机P7充电需要10个小时,正常吗? 华为P7电信版安卓手机,内置电池容量是多少毫安的,有卖加厚电池或比出厂原装电池容量更大的电池吗,手 华为p7和华为p8青春版哪个好一点