JAVA写入数据到EXCEL的简单DEMO

有些时候需要导出一些报表到EXCEL,下面介绍一个简单的方法,封装好工具类后只需要准备参数和路径即可。

使用jxl,只能处理2003的excel(xls)

首先导入JAR包


    net.sourceforge.jexcelapi
    jxl
    2.6.10

 

复制代码

复制代码

 1     public static void writeExcel(List> list, String path) {
 2         try {
 3             // Excel底部的表名
 4             String sheetn = "table1";
 5             // 用JXL向新建的文件中添加内容
 6             File myFilePath = new File(path);
 7             if (!myFilePath.exists())
 8                 myFilePath.createNewFile();
 9             OutputStream outf = new FileOutputStream(path);
10             WritableWorkbook wwb = Workbook.createWorkbook(outf);
11             jxl.write.WritableSheet writesheet = wwb.createSheet(sheetn, 1);
12             // 设置标题
13             if (list.size() > 0) {
14                 int j = 0;
15                 for (Entry entry : list.get(0).entrySet()) {
16                     String title = entry.getKey();
17                     writesheet.addCell(new Label(j, 0, title));
18                     j++;
19                 }
20             }
21             // 内容添加
22             for (int i = 1; i <= list.size(); i++) {
23                 int j = 0;
24                 for (Entry entry : list.get(i - 1).entrySet()) {
25                     Object o = entry.getValue();
26                     if (o instanceof Double) {
27                         writesheet.addCell(new jxl.write.Number(j, i, (Double) entry.getValue()));
28                     } else if (o instanceof Integer) {
29                         writesheet.addCell(new jxl.write.Number(j, i, (Integer) entry.getValue()));
30                     } else if (o instanceof Float) {
31                         writesheet.addCell(new jxl.write.Number(j, i, (Float) entry.getValue()));
32                     } else if (o instanceof Float) {
33                         writesheet.addCell(new jxl.write.DateTime(j, i, (Date) entry.getValue()));
34                     } else if (o instanceof BigDecimal) {
35                         writesheet.addCell(new jxl.write.Number(j, i, ((BigDecimal) entry
36                                 .getValue()).doubleValue()));
37                     } else if (o instanceof Long) {
38                         writesheet.addCell(new jxl.write.Number(j, i, ((Long) entry.getValue())
39                                 .doubleValue()));
40                     } else {
41                         writesheet.addCell(new Label(j, i, (String) entry.getValue()));
42                     }
43                     j++;
44                 }
45             }
46             wwb.write();
47             wwb.close();
48         } catch (WriteException e) {
49             e.printStackTrace();
50         } catch (IOException e) {
51             e.printStackTrace();
52         }
53     }

复制代码

 

复制代码

将它封装到工具类中,再调用,如下:

复制代码

 1     public static void main(String[] args) {
 2         //数据准备
 3         List> list = new ArrayList<>();
 4         for (int i = 0; i < 1000; i++) {
 5             Map map = new LinkedHashMap<>();
 6             map.put("ID", i+1000);
 7             map.put("姓名", "NAME"+i);
 8             map.put("地址", "address"+(i*2));
 9             list.add(map);
10         }
11         //存放路径
12         String path;
13         try {
14             //获取项目的路径
15             path = Class.class.getClass().getResource("/").getPath();
16             System.out.println(path);
17             //路径转换下格式
18             path = path.replaceAll("classes", "excel").concat("Test").concat(".xls");
19             System.out.println(path);
20             //写入到excel
21             writeExcel(list, path);
22         } catch (Exception e) {
23             e.printStackTrace();
24         }
25     }

复制代码

控制台输出路径:

JAVA写入数据到EXCEL的简单DEMO_第1张图片

效果如图:

JAVA写入数据到EXCEL的简单DEMO_第2张图片

 

转自:https://www.cnblogs.com/liangwen/p/7027470.html

你可能感兴趣的:(JAVA)