springboot 如何将一个list写入到csv文件中呢?
下文笔者讲述springboot中将list写入到csv文件中的方法分享,如下所示
测试代码
实现思路: 1.引入相应的jar包 2.编写相应的工具类 遍历写入数据到csv文件中例:
1.引入依赖jar <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</artifactId> <version>2.0</version> </dependency> 2.工具类 public class CsvFileUtils { /** * 写方法 * @param dataset 写入内容list * @param csvFilePath 保存路径 * @param csvHeaders csv文件表头 * @param <T> */ public static <T> void writeCSV(Collection<T> dataset, String csvFilePath, String[] csvHeaders) { try { // 定义路径,分隔符,编码 CsvWriter csvWriter = new CsvWriter(csvFilePath, ',', Charset.forName("GBK")); // 写入表头 csvWriter.writeRecord(csvHeaders); // 将list 组装成字符串类型数据 Iterator<T> it = dataset.iterator(); while (it.hasNext()) { T t = (T) it.next(); //获取类属性 Field[] fields = t.getClass().getDeclaredFields(); String[] csvContent = new String[fields.length]; for (short i = 0; i < fields.length; i++) { Field field = fields[i]; String fieldName = field.getName(); String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); try { Class tCls = t.getClass(); Method getMethod = tCls.getMethod(getMethodName, new Class[]{}); Object value = getMethod.invoke(t, new Object[]{}); if (value == null) { continue; } //取值并赋给数组 String textvalue = value.toString(); csvContent[i] = textvalue; } catch (Exception e) { e.getStackTrace(); } } //迭代插入记录 csvWriter.writeRecord(csvContent); } csvWriter.close(); System.out.println("<--------CSV文件写入成功-------->"); } catch (IOException e) { e.printStackTrace(); } } }
测试代码
public static void main(String[] args) { String[] csvHeaders = {"name", "age"}; String csvFilePath = "d:/testInfo.csv"; List<User> list = new ArrayList<>(); User p = new User(); p.setName("java265"); p.setage(28); User p1 = new User(); p.setName("猫猫"); p.setage(20); list.add(p); list.add(p1); CsvFileUtils.writeCSV(list, csvFilePath, csvHeaders); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。