话不多说,先上工具类。里面的逻辑是将读到的数据转存list再进行插入excel、如果是读数据库 也可以将里面的逻辑改成遍历实体类。道理是一样的。
public class ExcelUtil { /** * * @param excelName 导出的excel的表格名称 需加后缀 * @param excelPath 导出的excel的路径 * @param sheet sheet单元名称 * @param rowNum 表格列数 * @param titleName 表格中文标题列表 * @param data 数据集合 * @param num 每列的单元格数 * @return * @throws IOException * @throws WriteException */ public static boolean DataToExcel(String excelName,String excelPath, String sheet, int rowNum, List<String> titleName, List<String> data, int num) throws IOException{ boolean flag = false; WritableWorkbook wwb = null; try { File file1 = new File(excelPath); if (!file1.exists()) { file1.mkdir(); } File file = new File(file1, excelName); if (!file.exists()) { file.createNewFile(); } //以fileName为文件名来创建一个Workbook wwb = Workbook.createWorkbook(file); // 创建工作表sheet WritableSheet ws = wwb.createSheet(sheet, 0); //要插入到的Excel表格的行号,默认从0开始 for (int i = 0; i < rowNum; i++) { Label label = new Label(i, 0, titleName.get(i)); ws.addCell(label); } for (int i = 0; i < data.size(); i++) { for (int j = 0; j < num; j++) { ws.addCell(new Label(j, i + 1, data.get(i).split(",")[j])); } } wwb.write(); flag = true; // 关闭Excel工作簿对象 wwb.close(); } catch (Exception e) { e.printStackTrace(); } return flag; } }
测试:我说读本地文件,进行测试
public class testDownExcel { public static void main(String[] args) throws Exception { List<String> titleName = new ArrayList<String>(); titleName.add("编码"); titleName.add("名称"); titleName.add("简码"); titleName.add("税号"); titleName.add("地址电话"); titleName.add("银行账号"); titleName.add("邮件地址"); titleName.add("备注"); titleName.add("身份证校验"); List<String> list = ExcelUtil.readTxtFileToList("C:\\Users\\86187\\Desktop\\xxx客户编码.txt"); String excelPath = "D:\\test\\record"; boolean sheet1 = ExcelUtil.DataToExcel("kf.xls", excelPath, "sheet1", 9, titleName, list, 9); if (sheet1 == true){ System.out.println("excel生成成功!!!"); }else { System.out.println("excel生成失败!!!"); } } }
读取本地文件的方法
public static List<String> readTxtFileToList(String filePath) { //存放内容的map对象 List<String> strings = new ArrayList<>(); try { String encoding = "GBK"; File file = new File(filePath); int count = 0;//定义顺序变量 if (file.isFile() && file.exists()) { // 判断文件是否存在 InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) {//按行读取 if (!"".equals(lineTxt)) { strings.add(lineTxt);//放入list count++; } } // System.out.println("count:"+count); read.close();//关闭InputStreamReader bufferedReader.close();//关闭BufferedReader } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return strings; }
完成!!