FillDataTest.java 6.2 KB
Newer Older
庄家钜's avatar
庄家钜 已提交
1 2 3 4
package com.alibaba.easyexcel.test.core.fill;

import java.io.File;
import java.util.ArrayList;
庄家钜's avatar
庄家钜 已提交
5
import java.util.HashMap;
庄家钜's avatar
庄家钜 已提交
6
import java.util.List;
庄家钜's avatar
庄家钜 已提交
7
import java.util.Map;
庄家钜's avatar
庄家钜 已提交
8

庄家钜's avatar
庄家钜 已提交
9
import org.junit.Assert;
庄家钜's avatar
庄家钜 已提交
10 11 12 13 14 15 16
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

import com.alibaba.easyexcel.test.util.TestFileUtil;
import com.alibaba.excel.EasyExcel;
庄家钜's avatar
庄家钜 已提交
17 18
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.enums.WriteDirectionEnum;
庄家钜's avatar
庄家钜 已提交
19
import com.alibaba.excel.write.merge.LoopMergeStrategy;
庄家钜's avatar
庄家钜 已提交
20 21
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
庄家钜's avatar
庄家钜 已提交
22 23 24 25 26 27 28 29 30 31 32

/**
 *
 * @author Jiaju Zhuang
 */
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class FillDataTest {

    private static File file07;
    private static File file03;
    private static File simpleTemplate07;
庄家钜's avatar
庄家钜 已提交
33 34 35 36 37 38 39 40 41
    private static File simpleTemplate03;
    private static File fileComplex07;
    private static File complexFillTemplate07;
    private static File fileComplex03;
    private static File complexFillTemplate03;
    private static File fileHorizontal07;
    private static File horizontalFillTemplate07;
    private static File fileHorizontal03;
    private static File horizontalFillTemplate03;
42 43 44 45
    private static File byName07;
    private static File byName03;
    private static File byNameTemplate07;
    private static File byNameTemplate03;
庄家钜's avatar
庄家钜 已提交
46 47 48 49 50 51

    @BeforeClass
    public static void init() {
        file07 = TestFileUtil.createNewFile("fill07.xlsx");
        file03 = TestFileUtil.createNewFile("fill03.xls");
        simpleTemplate07 = TestFileUtil.readFile("fill" + File.separator + "simple.xlsx");
庄家钜's avatar
庄家钜 已提交
52 53 54 55 56 57 58 59 60
        simpleTemplate03 = TestFileUtil.readFile("fill" + File.separator + "simple.xls");
        fileComplex07 = TestFileUtil.createNewFile("fillComplex07.xlsx");
        complexFillTemplate07 = TestFileUtil.readFile("fill" + File.separator + "complex.xlsx");
        fileComplex03 = TestFileUtil.createNewFile("fillComplex03.xls");
        complexFillTemplate03 = TestFileUtil.readFile("fill" + File.separator + "complex.xls");
        fileHorizontal07 = TestFileUtil.createNewFile("fillHorizontal07.xlsx");
        horizontalFillTemplate07 = TestFileUtil.readFile("fill" + File.separator + "horizontal.xlsx");
        fileHorizontal03 = TestFileUtil.createNewFile("fillHorizontal03.xls");
        horizontalFillTemplate03 = TestFileUtil.readFile("fill" + File.separator + "horizontal.xls");
61 62 63 64
        byName07 = TestFileUtil.createNewFile("byName07.xlsx");
        byNameTemplate07 = TestFileUtil.readFile("fill" + File.separator + "byName.xlsx");
        byName03 = TestFileUtil.createNewFile("byName03.xls");
        byNameTemplate03 = TestFileUtil.readFile("fill" + File.separator + "byName.xls");
庄家钜's avatar
庄家钜 已提交
65 66 67 68
    }

    @Test
    public void t01Fill07() {
庄家钜's avatar
庄家钜 已提交
69
        fill(file07, simpleTemplate07);
庄家钜's avatar
庄家钜 已提交
70 71 72 73
    }

    @Test
    public void t02Fill03() {
庄家钜's avatar
庄家钜 已提交
74
        fill(file03, simpleTemplate03);
庄家钜's avatar
庄家钜 已提交
75 76
    }

庄家钜's avatar
庄家钜 已提交
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
    @Test
    public void t03ComplexFill07() {
        complexFill(fileComplex07, complexFillTemplate07);
    }

    @Test
    public void t04ComplexFill03() {
        complexFill(fileComplex03, complexFillTemplate03);
    }

    @Test
    public void t05HorizontalFill07() {
        horizontalFill(fileHorizontal07, horizontalFillTemplate07);
    }

    @Test
    public void t06HorizontalFill03() {
        horizontalFill(fileHorizontal03, horizontalFillTemplate03);
    }

97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
    @Test
    public void t07ByNameFill07() {
        byNameFill(byName07, byNameTemplate07);
    }

    @Test
    public void t08ByNameFill03() {
        byNameFill(byName03, byNameTemplate03);
    }

    private void byNameFill(File file, File template) {
        FillData fillData = new FillData();
        fillData.setName("张三");
        fillData.setNumber(5.2);
        EasyExcel.write(file, FillData.class).withTemplate(template).sheet("Sheet2").doFill(fillData);
    }

庄家钜's avatar
庄家钜 已提交
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
    private void horizontalFill(File file, File template) {
        ExcelWriter excelWriter = EasyExcel.write(file).withTemplate(template).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
        excelWriter.fill(data(), fillConfig, writeSheet);
        excelWriter.fill(data(), fillConfig, writeSheet);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("date", "2019年10月9日13:28:28");
        excelWriter.fill(map, writeSheet);
        excelWriter.finish();

        List<Object> list = EasyExcel.read(file).sheet().headRowNumber(0).doReadSync();
        Assert.assertEquals(list.size(), 5L);
        Map<String, String> map0 = (Map<String, String>)list.get(0);
        Assert.assertEquals("张三", map0.get(2));
    }

    private void complexFill(File file, File template) {
        ExcelWriter excelWriter = EasyExcel.write(file).withTemplate(template).build();
庄家钜's avatar
庄家钜 已提交
133
        WriteSheet writeSheet = EasyExcel.writerSheet().registerWriteHandler(new LoopMergeStrategy(2, 0)).build();
庄家钜's avatar
庄家钜 已提交
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
        excelWriter.fill(data(), fillConfig, writeSheet);
        excelWriter.fill(data(), fillConfig, writeSheet);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("date", "2019年10月9日13:28:28");
        map.put("total", 1000);
        excelWriter.fill(map, writeSheet);
        excelWriter.finish();
        List<Object> list = EasyExcel.read(file).sheet().headRowNumber(3).doReadSync();
        Assert.assertEquals(list.size(), 21L);
        Map<String, String> map19 = (Map<String, String>)list.get(19);
        Assert.assertEquals("张三", map19.get(0));
    }

    private void fill(File file, File template) {
庄家钜's avatar
庄家钜 已提交
149 150 151
        FillData fillData = new FillData();
        fillData.setName("张三");
        fillData.setNumber(5.2);
庄家钜's avatar
庄家钜 已提交
152
        EasyExcel.write(file, FillData.class).withTemplate(template).sheet().doFill(fillData);
庄家钜's avatar
庄家钜 已提交
153 154
    }

庄家钜's avatar
庄家钜 已提交
155 156
    private List<FillData> data() {
        List<FillData> list = new ArrayList<FillData>();
庄家钜's avatar
庄家钜 已提交
157
        for (int i = 0; i < 10; i++) {
庄家钜's avatar
庄家钜 已提交
158 159 160 161
            FillData fillData = new FillData();
            list.add(fillData);
            fillData.setName("张三");
            fillData.setNumber(5.2);
庄家钜's avatar
庄家钜 已提交
162 163 164
        }
        return list;
    }
庄家钜's avatar
庄家钜 已提交
165

庄家钜's avatar
庄家钜 已提交
166
}