Java中將jsonArray匯出為Excel
阿新 • • 發佈:2021-11-27
java中使用jxl匯出excel時,需指定WritableSheet物件中對應於每個單元格的資料。List型別是一種常用的資料型別,它裡面的元素是實體物件,當將它建立為WritableSheet物件時,它的每個實體元素可以通過簡單索引迴圈的形式遍歷到,但對實體每個屬性的遍歷,卻不能以簡單索引迴圈的形式實現,而只能用getter方法去逐一獲取,這樣,對不同的實體,均需特定的實現程式碼與之對應,勢必會造成大量的程式碼冗餘。
一種有效的策略是,將List轉化為jsonArray,把實體物件的屬性名構造為一個字串陣列,那麼,只需使用該陣列的索引,對每個json物件迴圈訪問它的字串形式的鍵,便可完成對屬性值的遍歷。
示例:
實體類Student
public class Student { private String name; private String gender; private int age; public Student(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
JsonArray匯出為Exclel
import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import java.io.File; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class JSONArrayToExcel { public static void main(String[] args) { Student student1 = new Student("張三","男",18); Student student2 = new Student("李四","男",19); Student student3 = new Student("小花","女",20); //實體List List<Student> studentList = new ArrayList<>(); studentList.add(student1); studentList.add(student2); studentList.add(student3); //List轉為JSONArray JSONArray jsonArray = JSONArray.fromObject(studentList); //實體屬性名稱陣列 Field[] fields = null; try { Class clazz = Class.forName("Student"); fields = clazz.getDeclaredFields(); }catch (Exception e){ e.printStackTrace(); } if (fields != null){ String fileName = "jsonarrayToExcelTest.xls"; //檔名 File myFile = new File("./"+fileName); try { WritableWorkbook writableWorkbook = Workbook.createWorkbook(myFile); //定義工作簿物件 WritableSheet writableSheet = writableWorkbook.createSheet("sheet1",0); //定義sheet物件 for (int i = 0; i < fields.length; i++) { //加入表頭單元格內容 writableSheet.addCell(new Label(i,0,fields[i].getName())); } for (int i = 0; i < jsonArray.size(); i++) { //加入資料單元格內容 JSONObject json = jsonArray.getJSONObject(i); for (int j = 0; j < fields.length; j++) { writableSheet.addCell(new Label(j,i+1,json.get(fields[j].getName()).toString())); } } writableWorkbook.write(); writableWorkbook.close(); }catch (Exception e){ e.printStackTrace(); } } } }
參考:
- https://blog.csdn.net/Albert201605/article/details/120331212
- https://blog.csdn.net/WangKun_0612/article/details/83618094
- https://blog.csdn.net/qqllife/article/details/77237969?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-10.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-10.highlightwordscore