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

基于NPOI的題庫管理的研究

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

畢紅棋 盧建飛

摘 要:在線測評是教學平臺的重要功能,能夠精準獲取學習者的學習行為,能夠幫助平臺管理人員調整平臺的知識結構、幫助學習者掌握自身的學習狀況并調整學習方法。測試因子的質量是在線測試性能的重要指標,而題庫是測試因子的直接體現形式,題庫管理具有特殊意義。基于NPOI的題庫管理可以快速、高效、穩定將題庫信息進行入庫出庫操作。

關鍵詞:NPOI;題庫管理;EXCEL

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

一、數據導入導出的設計思路與方法

(一)常用的方法

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

1. OleDb方式

采用OleDb方式的本質是把Excel文件當成數據源,從而進行數據的讀寫操作。對Excel文件數據的讀取過程的靈活性欠缺,對內存的使用率比較高,因此,當EXCEL文件的數據量較大時,會暴露內存空間不足導致內存溢出異常現象。

2. Com組件方式

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

3. NPOI方式

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

(二)基于NPOI的數據導入基本思路

結合NPOI組件將EXCEL中的數據導入到SQL Server 2008R2數據庫中的思路分析:

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

(2)通過循環,將每個表的數據單獨存放在ISheet對象中。

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

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

(三)基于NPOI的數據導出基本思路

結合NPOI組件將SQL Server2008R2數據庫中的數據導出并生成Excel文件的思路分析:

(1)呈現所有數據并分頁,頁面設計聯合查詢功能,根據需求選擇需要導出的數據。

(2)運用三層架構從SQL Server2008R2數據庫中讀取相應表中數據到Data Set數據集合中。

(3)調用創建文件對象類。

(4)運用HSSFWorkbook創建工作薄對象。

(5)運用ISheet創建工作表對象。

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

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

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

三、系統實現的關鍵技術

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

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

創建的文件需要有存放的位置,通常可以判斷是否存在相對路徑,如果不存在該路徑則自動創建路徑。被創建的文件名需要考慮排重問題,通常采用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(“工作表名稱”);

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

1.設置表頭第一行樣式

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.設置表頭第二行樣式

ICellStyle Style_ZiDuan=wk.CreateCellStyle();

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

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

3.設置單元格樣式

ICellStyle cellStyle=wk.CreateCellStyle();

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

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

cellStyle.WrapText=true;

cellStyle.ShrinkToFit=true;

(三)表頭設置及數據填充

1.獲取數據集合

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.創建第一行,第一行合并居中,填充工作簿名稱

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.第二行,將字段名稱填充到相應單元格

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.凍結表頭

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

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

(四)數據動態填充

工作表中填充數據需要避開表頭,因此開啟新行需要用到sheet.CreateRow(i+2),當然,如果表頭是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;

}

}

(五)文件下載

采用文件流的方式,將讀取的數據寫入文件。

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

{

wk.Write(fs);

}

用戶將需要的數據下載到客戶端,即導出數據時自動下載

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();

(六)數據加密與解密

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

四、結語

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

參考文獻

[1] 連俊光.基于NPOI數據導出方法的研究與實現[J].電腦知識與技術,2017(28):8-9,11.

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

[3] 吳奇英,郭娜.信息安全環境下計算機軟件的開發與應用[J].中國新技術新產品,2018(08):34-35.

基金項目:文章系江西省教改課題《基于大數據背景下的網絡教學與自主學習平臺的構建與應用》研究成果,項目編號:JXJG-16-43-5。

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

主站蜘蛛池模板: 手机精品福利在线观看| 婷婷午夜影院| 国产成人夜色91| 亚洲欧美天堂网| 国产黑丝视频在线观看| 国产午夜无码片在线观看网站| 日韩久草视频| 精品小视频在线观看| 永久免费精品视频| 五月丁香伊人啪啪手机免费观看| 久久精品人妻中文视频| 伊人久久久久久久| 无码网站免费观看| 亚洲天天更新| 69免费在线视频| 69国产精品视频免费| 国产91丝袜在线播放动漫| 中文字幕日韩欧美| 国产凹凸视频在线观看| 91在线播放国产| 婷婷色一二三区波多野衣| 国内精品免费| 广东一级毛片| 最新亚洲人成无码网站欣赏网 | WWW丫丫国产成人精品| 亚洲嫩模喷白浆| 久久夜夜视频| 亚洲精品在线影院| 国产特一级毛片| 国产成人精品一区二区不卡| 亚洲国产成人无码AV在线影院L| 日韩AV无码免费一二三区| 国产成人精品免费av| 茄子视频毛片免费观看| …亚洲 欧洲 另类 春色| 91精品国产福利| 亚洲美女久久| 天天摸夜夜操| 久久久久亚洲AV成人网站软件| a网站在线观看| 亚洲天堂久久久| 成年人国产网站| 91娇喘视频| 一级做a爰片久久毛片毛片| 中日韩一区二区三区中文免费视频| 久久国产av麻豆| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品片在线观看手机版 | 人人爽人人爽人人片| 成人午夜精品一级毛片| av色爱 天堂网| 精品伊人久久久香线蕉| 久久久四虎成人永久免费网站| 国模极品一区二区三区| 亚洲娇小与黑人巨大交| 小说 亚洲 无码 精品| 国产精品网址在线观看你懂的| 国产精品久久久久久久伊一| 久综合日韩| 国产99久久亚洲综合精品西瓜tv| 天堂成人在线| 老司机午夜精品网站在线观看| 国产高颜值露脸在线观看| 露脸一二三区国语对白| 国产精品亚洲一区二区在线观看| 日本久久久久久免费网络| 欧美一区精品| 72种姿势欧美久久久大黄蕉| 精品无码一区二区三区电影| www.亚洲色图.com| 亚洲AV无码乱码在线观看裸奔| 国产九九精品视频| 国产浮力第一页永久地址| 午夜色综合| 亚洲欧美在线精品一区二区| 欧美色综合久久| 国产网站一区二区三区| 无码中文字幕乱码免费2| 精品国产成人三级在线观看| 中文字幕 91| 国产丝袜91| 国产理论最新国产精品视频|