亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于NPOI的題庫管理的研究

        2018-12-06 07:40:30畢紅棋盧建飛
        青年與社會 2018年31期

        畢紅棋 盧建飛

        摘 要:在線測評是教學(xué)平臺的重要功能,能夠精準(zhǔn)獲取學(xué)習(xí)者的學(xué)習(xí)行為,能夠幫助平臺管理人員調(diào)整平臺的知識結(jié)構(gòu)、幫助學(xué)習(xí)者掌握自身的學(xué)習(xí)狀況并調(diào)整學(xué)習(xí)方法。測試因子的質(zhì)量是在線測試性能的重要指標(biāo),而題庫是測試因子的直接體現(xiàn)形式,題庫管理具有特殊意義?;贜POI的題庫管理可以快速、高效、穩(wěn)定將題庫信息進(jìn)行入庫出庫操作。

        關(guān)鍵詞:NPOI;題庫管理;EXCEL

        隨著信息化的發(fā)展,信息管理的重要性日趨明顯。數(shù)據(jù)的導(dǎo)入導(dǎo)出是題庫管理的核心操作,多數(shù)考試平臺的題庫需要手工錄入,效率低、質(zhì)量差,因此穩(wěn)定、高效的數(shù)據(jù)導(dǎo)入導(dǎo)出方法能提高考試平臺的可操作性。NPOI是指構(gòu)建在POI 3.x版本之上的一個程序,NPOI可以在沒有安裝Office的情況下對Word或Excel文檔進(jìn)行讀寫操作。NPOI是一個開源的C#讀寫Excel、WORD等微軟OLE2組件文檔的項(xiàng)目。利用NPOI在平臺中實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入導(dǎo)出具有商業(yè)價值。

        一、數(shù)據(jù)導(dǎo)入導(dǎo)出的設(shè)計思路與方法

        (一)常用的方法

        操作Excel文件的常用方法有OleDb方式、Com組件方式、NPOI方式等。下面就各自情況進(jìn)行簡述。

        1. OleDb方式

        采用OleDb方式的本質(zhì)是把Excel文件當(dāng)成數(shù)據(jù)源,從而進(jìn)行數(shù)據(jù)的讀寫操作。對Excel文件數(shù)據(jù)的讀取過程的靈活性欠缺,對內(nèi)存的使用率比較高,因此,當(dāng)EXCEL文件的數(shù)據(jù)量較大時,會暴露內(nèi)存空間不足導(dǎo)致內(nèi)存溢出異?,F(xiàn)象。

        2. Com組件方式

        Microsoft.Office.Interop.Excel.dll是Com組件,早期項(xiàng)目中使用頻率較高。采用COM方式操作EXCEL文件時對數(shù)據(jù)的訪問時基于單元格方式實(shí)現(xiàn)的,所以讀寫數(shù)據(jù)較慢,特別是當(dāng)數(shù)據(jù)量較大時,訪問效率問題更為突出。另一點(diǎn)是要求本機(jī)安裝了Microsoft Office組件。

        3. NPOI方式

        采用NPOI操作EXCEL是目前比較好的方法,但目前網(wǎng)上較多是的2.2版的源碼,對于程序設(shè)計不太熟悉的程序設(shè)計者,使用起來存在困難。NPOI在商業(yè)開發(fā)中較為重視,支持多種文件格式,例如xls、xlsx、doc、ppt、vsd等。

        (二)基于NPOI的數(shù)據(jù)導(dǎo)入基本思路

        結(jié)合NPOI組件將EXCEL中的數(shù)據(jù)導(dǎo)入到SQL Server 2008R2數(shù)據(jù)庫中的思路分析:

        (1)讀取EXCEL文件內(nèi)容并寫入workbook中。

        (2)通過循環(huán),將每個表的數(shù)據(jù)單獨(dú)存放在ISheet對象中。

        (3)通過sheet.LastRowNum來獲取行數(shù),sheet.GetRow(j)來獲取第j行數(shù)據(jù);每一行的數(shù)據(jù)又存在IRow對象中。

        (4)通過row.LastCellNum來獲取列數(shù),row.Cells[i]來獲取第i列數(shù)據(jù);并將數(shù)據(jù)寫入數(shù)據(jù)庫中。

        (三)基于NPOI的數(shù)據(jù)導(dǎo)出基本思路

        結(jié)合NPOI組件將SQL Server2008R2數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出并生成Excel文件的思路分析:

        (1)呈現(xiàn)所有數(shù)據(jù)并分頁,頁面設(shè)計聯(lián)合查詢功能,根據(jù)需求選擇需要導(dǎo)出的數(shù)據(jù)。

        (2)運(yùn)用三層架構(gòu)從SQL Server2008R2數(shù)據(jù)庫中讀取相應(yīng)表中數(shù)據(jù)到Data Set數(shù)據(jù)集合中。

        (3)調(diào)用創(chuàng)建文件對象類。

        (4)運(yùn)用HSSFWorkbook創(chuàng)建工作薄對象。

        (5)運(yùn)用ISheet創(chuàng)建工作表對象。

        (6)創(chuàng)建表格的行和單元格。

        (7)將Data Set數(shù)據(jù)集合中的數(shù)據(jù)按要求填入工作表對應(yīng)的單元格中。

        (8)將工作表內(nèi)容寫入到文件對象中,生成Excel文件,并提供客戶端下載。

        三、系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)

        將EXCEL中的數(shù)據(jù)導(dǎo)入到MSSQL 2008R2中難度系數(shù)不大,相比數(shù)據(jù)導(dǎo)出生成報表難度系數(shù)更大,因此本文就將題庫中數(shù)據(jù)信息導(dǎo)出為EXCEL文件為例,闡述基于NPOI(2.3)的數(shù)據(jù)導(dǎo)出關(guān)鍵技術(shù)。

        (一)創(chuàng)建EXCEL文件與工作表

        創(chuàng)建的文件需要有存放的位置,通??梢耘袛嗍欠翊嬖谙鄬β窂剑绻淮嬖谠撀窂絼t自動創(chuàng)建路徑。被創(chuàng)建的文件名需要考慮排重問題,通常采用DateTime.Now處理。

        string ServerPath=AppDomain.CurrentDomain.BaseDirectory +“\\CreateExcel\\”;

        if(!Directory.Exists(ServerPath)){ Directory.CreateDirectory(ServerPath);}

        string FileName=DateTime.Now.ToString(“yyyyMMddHHmmssffff”)+“.xls”;

        HSSFWorkbook wk=new HSSFWorkbook();

        ISheet sheet=wk.CreateSheet(“工作表名稱”);

        (二)設(shè)置表頭及單元格樣式

        1.設(shè)置表頭第一行樣式

        ICellStyle Style_BiaoTi=wk.CreateCellStyle();

        Style_BiaoTi.Alignment=NPOI.SS.UserModel.HorizontalAlignment.Center;

        Style_BiaoTi.VerticalAlignment=NPOI.SS.UserModel.VerticalAlignment.Center;

        IFont font=wk.CreateFont();

        font.FontHeightInPoints=16;

        font.Boldweight=(short)NPOI.SS.UserModel.FontBoldWeight.Bold;

        font.FontName=“黑體”;

        Style_BiaoTi.SetFont(font);

        2.設(shè)置表頭第二行樣式

        ICellStyle Style_ZiDuan=wk.CreateCellStyle();

        Style_ZiDuan.Alignment=NPOI.SS.UserModel.HorizontalAlignment.Center;

        Style_ZiDuan.VerticalAlignment=NPOI.SS.UserModel.VerticalAlignment.Center;

        3.設(shè)置單元格樣式

        ICellStyle cellStyle=wk.CreateCellStyle();

        cellStyle.Alignment=NPOI.SS.UserModel.HorizontalAlignment.Center;

        cellStyle.VerticalAlignment=NPOI.SS.UserModel.VerticalAlignment.Center;

        cellStyle.WrapText=true;

        cellStyle.ShrinkToFit=true;

        (三)表頭設(shè)置及數(shù)據(jù)填充

        1.獲取數(shù)據(jù)集合

        Bll.RS.StaffMember Shuju=new Bll.RS.StaffMember();

        DataRow dr=Shuju.StaffMember_Show().Tables[0].Rows[0];

        2.獲取表的字段名稱

        Dal.Functions Functions=new Dal.Functions();

        List ZiDuan_Name=Functions.GetTableColumn(“RS_StaffMember”);

        3.創(chuàng)建第一行,第一行合并居中,填充工作簿名稱

        IRow Row_BiaoTi=sheet.CreateRow(0);

        ICell Cel_BiaoTi=Row_BiaoTi.CreateCell(0);

        Cel_BiaoTi.SetCellValue(“信息列表”);

        if(ZiDuan_Name.Count>0)

        {

        sheet.AddMergedRegion(new CellRangeAddress(0,0,0,ZiDuan_Name.Count-1));

        }

        Cel_BiaoTi.CellStyle=Style_BiaoTi;

        4.第二行,將字段名稱填充到相應(yīng)單元格

        IRow Row_ZiDuan=sheet.CreateRow(1);

        for(int M=0;M < ZiDuan_Name.Count;M++)

        {

        ICell Cell_ZiDuan=Row_ZiDuan.CreateCell(M);

        Cell_ZiDuan.SetCellValue(ZiDuan_Name[M].ToString());

        Cell_ZiDuan.CellStyle=Style_ZiDuan;

        sheet.AutoSizeColumn(M);

        }

        5.凍結(jié)表頭

        表頭能直接呈現(xiàn)數(shù)據(jù)的名稱,但當(dāng)工作表的數(shù)據(jù)量較大時,單屏不能顯示所有數(shù)據(jù),查看更多數(shù)據(jù)需要下拉,同時,表頭也會被移出視線,因此凍結(jié)表頭十分必要。NPOI凍結(jié)表頭需要用到CreateFreezePane函數(shù)。

        sheet.CreateFreezePane(0,2,0,2);

        (四)數(shù)據(jù)動態(tài)填充

        工作表中填充數(shù)據(jù)需要避開表頭,因此開啟新行需要用到sheet.CreateRow(i+2),當(dāng)然,如果表頭是N,則需要用到sheet.CreateRow(i+N)。

        for(int i=0;i < Shuju.StaffMember_Show().Tables[0].Rows.Count;i++)

        {

        IRow row=sheet.CreateRow(i+2);

        row.HeightInPoints=30;

        for(int j=0;j < Shuju.StaffMember_Show().Tables[0].Columns.Count;j++)

        {

        ICell cell=row.CreateCell(j);

        if(Shuju.StaffMember_Show().Tables[0].Rows[i][j].ToString()==“” ||、Shuju.StaffMember_Show().Tables[0].Rows[i][j].ToString()==null)

        {

        }

        else

        {

        cell.SetCellValue(Shuju.StaffMember_Show().Tables[0].Rows[i][ZiDuan_Name[j]].ToString());

        }

        cell.CellStyle=cellStyle;

        }

        }

        (五)文件下載

        采用文件流的方式,將讀取的數(shù)據(jù)寫入文件。

        using(FileStream fs=File.OpenWrite(ServerPath + FileName))

        {

        wk.Write(fs);

        }

        用戶將需要的數(shù)據(jù)下載到客戶端,即導(dǎo)出數(shù)據(jù)時自動下載

        MemoryStream ms=new MemoryStream();

        wk.Write(ms);

        Response.AddHeader(“Content-Disposition”,string.Format(“attachment;filename={0}.xls”,HttpUtility.UrlEncode(“工作表名稱”),System.Text.Encoding.UTF8)));

        Response.BinaryWrite(ms.ToArray());

        Response.Flush();

        Response.End();

        (六)數(shù)據(jù)加密與解密

        黑客活動頻繁,平臺數(shù)據(jù)安全成為平臺運(yùn)維第一要務(wù)。今年FaceBook兩次信息泄漏,造成嚴(yán)重影響,題庫管理中通常存放用戶敏感信息,因此,加強(qiáng)數(shù)據(jù)的保護(hù)意識十分必要。目前,大部分平臺數(shù)據(jù)未加密,部分采用常規(guī)的MD5等方法加密,導(dǎo)致部分加密信息可以被解密。因此提出基于DES3Encrypt、DES3Decrypt立法進(jìn)行加密解密,提高了平臺的安全性與可用性。

        四、結(jié)語

        2017年6月1日,網(wǎng)絡(luò)安全法開始實(shí)施,在信息安全高度重視的背景,開發(fā)安全、高效、體驗(yàn)式平臺具有時代意義。隨著遠(yuǎn)程教育、網(wǎng)絡(luò)教育、移動教育飛速發(fā)展的同時,網(wǎng)絡(luò)教學(xué)平臺的質(zhì)量越來越受到關(guān)注,題庫作為教學(xué)平臺的一個核心功能,其管理的重要性不言而喻,基于NPOI的題庫信息管理也具有特殊含義。

        參考文獻(xiàn)

        [1] 連俊光.基于NPOI數(shù)據(jù)導(dǎo)出方法的研究與實(shí)現(xiàn)[J].電腦知識與技術(shù),2017(28):8-9,11.

        [2] 蔡小艷,盧莉娜,鄭炎,等.基于NPOI組件生成Excel報表的設(shè)計與實(shí)現(xiàn)[J].電腦知識與技術(shù),2016(01):64-65.

        [3] 吳奇英,郭娜.信息安全環(huán)境下計算機(jī)軟件的開發(fā)與應(yīng)用[J].中國新技術(shù)新產(chǎn)品,2018(08):34-35.

        基金項(xiàng)目:文章系江西省教改課題《基于大數(shù)據(jù)背景下的網(wǎng)絡(luò)教學(xué)與自主學(xué)習(xí)平臺的構(gòu)建與應(yīng)用》研究成果,項(xiàng)目編號:JXJG-16-43-5。

        作者簡介:畢紅棋(1984- ),男,漢族,湖北赤壁人,豫章師范學(xué)院,碩士,講師,主要從事軟件開發(fā)、計算機(jī)教學(xué)和電子商務(wù)方面的研究工作;盧建飛,男,江西南昌人,碩士,講師,主要從事高等教育管理和理論研究。

        粉嫩国产av一区二区三区| 亚洲人成网站在线播放观看| 中文字幕人成人乱码亚洲| 亚洲精品一区二区三区日韩 | 欧美h久免费女| 中文字幕av素人专区| 国产精品一区二区av麻豆| 性生交大片免费看淑女出招 | 久久久亚洲av成人乱码| 在线亚洲高清揄拍自拍一品区| 亚洲视频一区| 国产成年无码久久久免费| 免费看草逼操爽视频网站| 亚洲va久久久噜噜噜久久天堂| 人妻无码aⅴ不卡中文字幕| 日本a在线播放| 亚洲中文字幕乱码在线观看| 天天插天天干天天操| 日韩人妻一区二区中文字幕| 国产av熟女一区二区三区 | 中文字幕精品亚洲人成| 国产精品一区二区久久精品蜜臀| 少妇人妻字幕精品毛片专区| 中字幕人妻一区二区三区| 99热在线精品播放| 97自拍视频国产在线观看| 久久久久av综合网成人| 精品久久久久久久久久中文字幕| 免费国产一级片内射老| av网站免费观看入口| 国产免费a∨片在线软件 | 日韩在线精品在线观看| 日韩精品免费av一区二区三区 | 久久天堂av综合合色| 国产大屁股视频免费区| 四虎影库久免费视频| 国产极品美女到高潮视频| 亚洲毛片在线观看免费| 免费a级毛片无码a∨男男 | 色噜噜精品一区二区三区| 日本真人添下面视频免费|