Cet article présente principalement Java pour générer un exemple de code Excel via Apache poi. L'éditeur pense que c'est plutôt bien. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur pour venir jeter un oeil
Tout d'abord, jar
maven ajoute des dépendances
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency>
Au début Je pensais que c'était poi, puis ajoutez simplement la dépendance de poi directement, qui sait qu'il n'y a pas de classe requise. Après vérification, j'ai découvert que la classe à utiliser est poi-ooxml
XSSFWorkbook, qui représente un document Excel
XSSFSheet, représente une feuille dans le document
XSSFRow, représente une ligne dans la feuille
XSSFCell , représente la ligne La valeur de chaque élément
L'utilisation la plus basique
//创建excel文档 XSSFWorkbook workbook = new XSSFWorkbook(); //创建sheet XSSFSheet sheet = workbook.createSheet("sheetName"); int rownum=0; //创建首行 XSSFRow firstrow = sheet.createRow(rownum++); int cellnum = 0; //把保存在titles中的各个列名,分别在row中创建cell for(String key : titles){ XSSFCell cell = firstrow.createCell(cellnum++); cell.setCellValue(key); } //下面可以继续创建行 //把excel写到要写的outputStream中 workbook.write(output); //最后关闭 workbook.close();
Un petit exemple
Utilisez la réflexion pour écrire chaque attribut de la classe du bean (en utilisant getXxx) dans Excel
ExcelUtil.java
package me.paul.excelDemo; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtil { public <T> void getExcel(List<T> list,Class<T> c,OutputStream output) throws IOException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ Map<String,Method> methodMap = new LinkedHashMap<>(); Method[] methods = c.getDeclaredMethods(); for(int i=0;i<methods.length;i++){ Method method = methods[i]; String name = method.getName(); Pattern pattern = Pattern.compile("get(.*)"); Matcher matcher = null; if((matcher = pattern.matcher(name)).matches()){ name = matcher.group(1); char ch = name.charAt(0); char newch = (char) (ch + 32); name = name.replace(ch,newch); methodMap.put(name, method); } } XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(c.getCanonicalName()); int rownum=0; XSSFRow firstrow = sheet.createRow(rownum++); int cellnum = 0; for(String key : methodMap.keySet()){ XSSFCell cell = firstrow.createCell(cellnum++); cell.setCellValue(key); } for(T t : list){ XSSFRow row = sheet.createRow(rownum++); cellnum = 0; for(String key:methodMap.keySet()){ Method method = methodMap.get(key); //设置可访问,之前不知道这方法,所以关于反射那篇文章有错误,见谅见谅 method.setAccessible(true); Object obj = method.invoke(t); XSSFCell cell = row.createCell(cellnum++); cell.setCellValue(obj== null ? "":obj.toString()); } } workbook.write(output); workbook.close(); } }
App .java est utilisé pour les tests
package me.paul.excelDemo; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; public class App { public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException { List<User> list = new ArrayList<>(); User u = new User(); u.setId(1); u.setName("Paul"); u.setAge(18); list.add(u); u = new User(); u.setId(2); u.setName("Johnson"); u.setAge(20); list.add(u); u = new User(); u.setId(3); u.setName("David"); u.setAge(22); list.add(u); OutputStream output = new FileOutputStream("/home/paul/user.xlsx"); new ExcelUtil().getExcel(list, User.class,output); output.close(); } }
Capture d'écran des résultats des tests
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!