匯出Excel資料

2021-09-22 20:12:49 字數 1741 閱讀 1343

在乙個專案中會記錄著很多資料,這些資料呈現出的樣子一般都是以**形式顯示的,採用的是我們平時使用的excel樣式,能更直觀的檢視某乙個學生或者說是一件商品的具體資訊,而這些資料確實能以excel格式匯出。

比如說乙個學校的系統,它裡面記錄著大量的學生資料,包括學生的資訊等等,那我就將考生資訊匯出到乙個excel**中。

首先分析一下流程,要匯入的是學生的這些資訊,那麼一開始肯定要查詢出這些資料,然後將這些資料錄入到excel**中。下面將講解具體的步驟。

一、查詢考生資料

先建立乙個控制器,同時傳入引數學院id,年級id,班級id,要查詢考生資訊所需要的資料要涉及到幾張表的資料進行連表查詢,查詢出所需要的字段(學號,姓名,身份證號,性別,學院,專業,年級,班級,賬號)然後返回乙個tolist(),將資料用乙個相同資料型別的變數接收(list liststudent)。

查詢所需要的字段是其一,同時還需要查詢出學院、專業、年級、班級和學生的id,因為要判斷是否有資料上傳過來可以直接通過id來判斷,判斷學院、年級和班級id是否大於0,大於0代表有資料,並篩選出是學院年級班級id都相同的資料(匯出的資料是通過這三個條件進行篩選出的資料)。

二、建立並匯出excel資料

查詢出所有需要的字段後便要建立乙個excel**,然後將查詢的考生資料寫入**中。

建立乙個excel**首先通過npoi.hssf.usermodel.hssfworkbook建立出乙個excel的物件(book),然後再通過npoi.ss.usermodel.isheet建立出乙個excel物件的工作薄(sheet)

這樣就順利的建立了乙個excel的**了,然後就要開始錄入資料,錄入的資料是通過連表查詢出的具體資料,並不能將表頭錄入,所以表頭部分需要自行錄入。

通過npoi.ss.usermodel.irow在工作薄(sheet)中新增第一行的頭部標題索引為0,同時選擇到第一行每一列的第一格錄入標題的具體資料。

在設定指定單元格資料的同時還可以設定單元格的寬度,比如說是身份證號碼,家庭住址什麼的這些資料顯示比較長,如果不設定具體寬度,在第一時間審閱效果就不能直接看到所有的資料,還需要手動調節比較麻煩,針對這個問題便在一開始設計時就調集成適的寬度,便於審閱。

一般匯出的資料肯定不止一條,在錄入資料時不可能直接手動錄入,而是用for迴圈(迴圈的物件是乙個陣列形式)。

迴圈遍歷之前查詢出的所有考生,然後npoi.ss.usermodel.irow建立出一行,並將索引加i從而達到有多少條資料就增加多少行的效果。判斷每一條考生資料中的每乙個字段是否為空(liststudent[i].欄位),如果為空則填入的value值為0,不為空則將每一條資料的每乙個欄位的value值填寫在自己指定的哪一行中指定的位置。

在輸出時還需要給該excel檔案命名。建立乙個變數,用字串拼接的方法拼接出該檔案的名稱:考生資訊+當前時間+excel檔案型別。

接下來就要將這個處理完成的工作薄寫入檔案流,然後將它讀取出來。先定義乙個檔案流,然後將工作薄(book)用write()方法寫如檔案流中,再在定義的檔案流中用seek()方法從檔案流的頭部位置開始讀取,將檔案讀取出來。

最後用return file將檔案以excel格式返回。

資料匯出excel

一 name get name 當我們接到乙個資料表的名字的時候用下面這個sql語句就能把表字段展示出來 res db select describe name foreach res as v a就是我們所需要的欄位名稱 接下來我們定義excel裡表頭的格式 str for i 0 i array...

資料匯出excel

exportexcel data,title,filename 匯出資料為excel param data 乙個二維陣列,結構如同從資料庫查出來的陣列 param title excel的第一行標題,乙個陣列,如果為空則沒有標題 examlpe exportexcel arr,array id 賬戶...

excel資料匯出

用於乙個演示的小demo,提供一種資料匯出的一種思路。通過自己進行自定義的幾個資料進行的測試。前台 border 0 style margin top 4px margin left 18px href class easyui linkbutton onclick downloadfile 資料匯...