/*** * 生成csv文件 * * @param context * @param list * 对象集合 * @param csvName * 对应的文件名称 * @param propertyArray * 属性字符串,逗号分割 */ public static void writeCsvFile(Context context, List list, String csvName, String folder, String propertyArray) { if (list == null || list.isEmpty()) return; // sdcard/com/cela/目录下 String path = DataUtils.getCsvFilePath(folder); File file = new File(path); if (!file.exists()) { file.mkdirs(); } path += csvName; // 判断文件是否存在,如果存在则取出原有数据 List<String[]> originalList = null; try { File f = new File(path); if (f.exists()) { originalList = new ArrayList<String[]>(); CSVReader reader = new CSVReader(new FileReader(path), ','); originalList.addAll(reader.readAll()); } } catch (Exception e) { e.printStackTrace(); } OutputStreamWriter fw = null; CSVWriter csv = null; // 通过反射获取list里面的值 try { fw = new OutputStreamWriter(new FileOutputStream(path), "UTF-8"); csv = new CSVWriter(fw, ','); final int size = list.size(); // 写入原有数据 if (originalList != null && !originalList.isEmpty()) { final int len = originalList.size(); for (int i = 0; i < len; i++) { csv.writeNext(originalList.get(i)); } } // 开始写入对象 for (int i = 0; i < size; i++) { Object obj = list.get(i); Class cla = obj.getClass(); String[] propertys = propertyArray.split(","); String[] values = new String[propertys.length]; for (int j = 0; j < propertys.length; j++) { Field field = cla.getDeclaredField(propertys[j]); String fname = field.getName(); String strLitter = fname.substring(0, 1).toUpperCase(); String getName = "get" + strLitter + fname.substring(1); String setName = "set" + strLitter + fname.substring(1); Method getmethod = cla.getMethod(getName, new Class[] {}); cla.getMethod(setName, new Class[] { field.getType() }); Object value = getmethod.invoke(obj, new Object[] {}); if(value!=null){ values[j] = (String) value.toString(); }else{ values[j] = ""; } } csv.writeNext(values); } } catch (Exception e) { e.printStackTrace(); } finally { if (csv != null) { try { csv.flush(); csv.close(); } catch (IOException e) { e.printStackTrace(); } } } }
将数据写入到CSV文件
猜你喜欢
转载自m-wen997721750.iteye.com/blog/2100010
今日推荐
周排行