999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應用Electron 架構技術操作Excel 文件

2019-12-28 08:24:46鄧杰海
現代計算機 2019年32期
關鍵詞:進程界面信息

鄧杰海

(江西中醫藥高等專科學校教育技術中心,撫州344000)

0 引言

在計算機課程的實踐教學中,上機實踐操作課占的比重較大。在上機過程中,教師有時需要在機房的教師電腦端給學生演示軟件的操作,需要將教師端的電腦屏幕實現發送給學生電腦端;或者在學生上機過程中,也需要實時監控學生的桌面,關注學生在上機過程中的一舉一動,防備學生上機課開小差,操作一些與上課無關的軟件應用,如打游戲、看電影或看小說。為了實現以上兩個目的,使用一套計算機機房教學輔助軟件還是很有必要的。在日常教學中教學輔助軟件也應用了幾個,或多或少都存在一些問題,不能完全滿足要求,因此需要自主開發一套機房輔助軟件。

開發機房輔助軟件的功能模塊中,有一個模塊實現的功能是將上課班級學生的名單導入,并在Electron渲染進程中將班級名單顯示出來,在軟件界面中要響應鼠標事件,將鼠標停留的學生信息能突出的顯示來,從而可以快速地定位到需要關注的學生的電腦上。本文的范圍為將Electron 怎么導入Excel 表格,JavaScript編程語言怎么實現這些功能并操作DOM。以下就各部分的功能及實現的源代碼進行說明。

1 導入Excel文件的實現

在編寫本部分的軟件實現過程中,導入文件使用到的是input type=file 元素來實現本地文件的導入。通過input type=file 元素,可以得到本地文件的file 對象。如果直接使用input type=file 元素,由Chromium開源引擎渲染之后界面不大美觀。為了解決這個問題,需要引用CSS 技術,對input type=file 元素進行處理。文章的篇幅有限,此處就不將Html 語言和CSS 文本樣式計算機語言寫上。

如圖1 所示,在沒有經過CSS 語言處理,input type=file 的外觀確實不美觀。在經過CSS 語言處理和HTML 語言定義之后,就可以得到如圖2 所示的外觀界面。

圖1 未經處理的界面

圖2 經過處理的選擇班級的界面

2 使用JS-XLSX工具庫將Excel文件導入渲染進程的界面中

將要導入的Excel 表頭如圖3 所示。

圖3 導入的Excel文件表頭結構

利用JS-XLSX 工具庫將Excel 文件導入渲染進程的程序清單如下:

var XLSX=require('xlsx');

var Electron=require('Electron').remote;

var stuinfo=require('./stuinfo');

var userinterface=require('./userInterface');

var process_wb=(function(){

return function process_wb(wb){

wb.SheetNames.forEach(function(sheetName){

var worksheet=wb.Sheets[sheetName];//獲得工作表對象

var colNumArr=['A','B','C','D','E','F','G','H','I','J','K','L','M','N'];

//用于Excel 表格每行的編號

var i=2;

var j=0;

//var cell_address='A2';

var rowVal=[];

//獲得單元格地址

var cell_address=colNumArr[0]+i;

//獲得單元格地址相對應的單元格對象

var cell_obj=worksheet[cell_address];

//獲得對應單元格地址的源數據,如果不是undefined 則表示單元格有數據,進入循環進行處理

var cell_val=(cell_obj?cell_obj.v:undefined);

//如果單元格的源數據不為undefined,則進入循環進行處理

while(cell_val){

if(cell_val){

//用于存放獲得的單元格數據的數組的下標

j=0;

//對Excel 表格A~N 列的數據進行處理

colNumArr.forEach(function(colNum){

//取到第i 行每一列的單元格地址

cell_address=colNum+i;

//獲得對應單元格地址的單元格對象

cell_obj=worksheet[cell_address];

//獲得相應單元格的源數據

rowVal[j++]=cell_obj.v;

});

//console.log(rowVal);

//獲得的一行的單元格數據push 入存放學生信息的stuinfo 數組,并同時在渲染進程顯示

stuinfo.appendStu(rowVal);

//調用渲染進程函數,將學生的姓名與學號信息在渲染進程的界面中顯示出來

userInterface.initSrc(rowVal[0],rowVal[1]);

//將存放每行單元格數據的臨時數組清空,準備存放下一個學生信息

rowVal.length=0;

}

//調到Excel 表格的下一行

i++;

cell_address=colNumArr[0]+i;

cell_obj=worksheet[cell_address];

cell_val=(cell_obj?cell_obj.v:undefined);

}

});

};

})();

var do_file=(function(){

return function do_file(files){

var f=files[0];

var reader=new FileReader();

reader.onload=function(e){

var data=e.target.result;

//獲得Excel 表格的無符號單字節的數組

data=new Uint8Array(data);

//調用JS-XLSX 工具庫函數process_wb 對數組進行處理

process_wb(XLSX.read(data,{type:'array'}));

};

reader.readAsArrayBuffer(f);

};

})();

(function(){

var xlf=document.getElementById('selectFile');

function handleFile(e){

if(e.target.files.length===0){

return;

}

let filePath=$(this).val();

let urlArr=filePath.split("\");

let fileName=urlArr[urlArr.length-1];

$(".fileName").val(fileName);

userinterface.clearScrn();

do_file(e.target.files);

}

//調用input type=file 元素的change 事件獲得打開的Excel文件的File 對象

xlf.addEventListener('change',handleFile,false);})();

以上程序清單中的函數來自GitHub 地址:https://github.com/SheetJS/js-xlsx,對相關的函數作了一些修改,在相關的Demo 程序中,沒有將Excel 的每個單元格進行處理,而是使用XLSX.utils.sheet_to_html 函數將Excel 表格中的數據直接顯示在div 元素中。如此處理顯然不能滿足要求,根據圖3 所示的Excel 表頭,修改了一下GitHub 地址所提供的程序源代碼,如上面的process_wb(wb)函數,對上課班級中的每個學生信息進行處理。

3 在渲染進程的界面中顯示學生信息

在將Excel 本地文件中的數據導入內存數組中同時,也將學生的學號和姓名信息在渲染進程的界面中顯示出來,如圖4 所示是在導入學生信息之前的界面,圖5 是導入學生信息之后的界面。

圖4 導入Excel文件之前渲染進程的界面

圖5 導入Excel學生信息之后的渲染進程界面

以上就是導入班級信息之后再調用渲染進程的initSrc 函數,將學生的姓名和學號在渲染進程的主界面中顯示出來,源代碼如下,文章篇幅有限,就沒有將渲染進程界面中的CSS 文本樣式計算機語言寫上:

//初始化屏幕界面

function initSrc(stuXh,stuXm){

if(!document)document=window.document;

const mainArea=document.getElementById('main-areaDJH');

const template=document.querySelector('#scr-maintemp');

let clone=document.importNode(template.content,true);

clone.querySelector('img').src='./public/nologin.svg';

clone.querySelector('img').setAttribute('id',stuXh);

clone.querySelector('.stuXhmain').innerText=stuXh;

clone.querySelector('.stuXmmain').innerText=stuXm;

mainArea.appendChild(clone);

const scrleft=document.getElementById('page-wrapperDJH');

const lefttemp=document.querySelector('#scr-lefttemp');

let clone2=document.importNode(lefttemp.content,true);

clone2.querySelector('.leftXh').innerText=stuXh;

clone2.querySelector('.leftXm').innerText=stuXm;

scrleft.appendChild(clone2);

}

渲染進程對應的index.html 文件如下:

4 結語

在實現本文論述的功能過程中,在網上找了好多的資料,也學到了很多的東西。但網上的資料都不是太齊全,很多程序源代碼還要靠自己寫出來。通過使用Electron 結構技術開發桌面程序之后,發現使用JavaScript 語言開發桌面程序有天然的優勢,特別應用CSS 文本樣式計算機語言設計渲染進程的界面非常方便,網上資料也非常多,感覺比傳統的桌面開發工具C#、Delphi 和VC 做界面還方便。

猜你喜歡
進程界面信息
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
主站蜘蛛池模板: 欧美国产日韩在线| 99久久精品免费看国产电影| 国产高清在线观看| 亚洲人成日本在线观看| 欧美不卡视频一区发布| 亚洲大学生视频在线播放| 伊人久久久大香线蕉综合直播| 婷婷色婷婷| 国产18在线播放| 国产精品九九视频| 久久99国产精品成人欧美| 国产福利一区在线| 欧美www在线观看| 欧美亚洲国产视频| 欧美日韩中文字幕在线| 亚洲高清日韩heyzo| 日本人妻一区二区三区不卡影院| 无码网站免费观看| 久久精品视频亚洲| 在线不卡免费视频| 在线欧美a| 国产91丝袜在线播放动漫| 男女男免费视频网站国产| 国产一二视频| 91啪在线| 91小视频版在线观看www| 久久国产V一级毛多内射| 九色视频线上播放| 狠狠躁天天躁夜夜躁婷婷| 青青草久久伊人| 搞黄网站免费观看| a级毛片网| 成人字幕网视频在线观看| 国产精品美女网站| 视频一区亚洲| 成人亚洲国产| 国产欧美精品午夜在线播放| 女人18毛片久久| 午夜激情婷婷| jizz在线免费播放| 日本欧美视频在线观看| 99热在线只有精品| 成人国产精品网站在线看| 蜜桃臀无码内射一区二区三区| 国产第一页免费浮力影院| 国产va免费精品观看| 97在线碰| 日韩黄色大片免费看| 久久综合伊人 六十路| 免费激情网址| 亚洲国产黄色| 真实国产精品vr专区| 久久熟女AV| 久久黄色小视频| 欧美成在线视频| 欧美国产视频| 五月婷婷伊人网| 浮力影院国产第一页| 狠狠v日韩v欧美v| 国产精品微拍| 91在线精品麻豆欧美在线| 色综合色国产热无码一| 国产精品亚欧美一区二区| 久久国产精品影院| 国产精品无码一二三视频| 欧美高清视频一区二区三区| 美女亚洲一区| 天堂在线www网亚洲| 国产精品久久自在自2021| 国产区成人精品视频| 亚洲中文字幕国产av| 日本少妇又色又爽又高潮| 亚洲天堂自拍| 国产女同自拍视频| 欧美日韩第三页| 波多野结衣一区二区三区88| 人妻精品全国免费视频| 亚洲第一成年网| 中文字幕一区二区人妻电影| 国产精品流白浆在线观看| 亚洲av色吊丝无码| www精品久久|