Skip to content
BigBaicai edited this page Nov 22, 2018 · 1 revision

Excel文件

excel文件包含2种格式,xls和xlsx,本工具集中均使用ExcelReader ExcelWrite处理,位于joycai.utils.sheet.excel包下

  • sheetIdx 从0开始
  • rowIdx 从0开始

XLS与XLSX

在创建ExcelReader ExcelWrite通过参数ExcelType.XLS或者ExcelType.XLSX来指定文件类型,如果指定了错误的类型来读取文件(比如文件是xls却使用了ExcelType.XLSX)会抛出如下异常

  • OfficeXmlFileException 代表你尝试用xls方式读取xlsx
  • OLE2NotOfficeXmlFileException 代表你尝试用xlsx方式读取xls

读取

ExcelReader reader = new ExcelReader(new FileInputStream("test.xls"), ExcelType.XLS);

在获取了ExcelReader 对象后,可以进行进一步操作

跳过空行,获取到第一个数据行

Int rowIdx = reader.firstLineIdx(0)

firstLineIdx(sheetIdx)由于excel支持多数据表,所以这里需要提供数据表序号(从0开始),rowIdx(从0开始)即为第一个非空数据行

读取行数据,并写入对象

TestObj obj = (TestObj) reader.readLineToObject(0, 4, new String[]{"col2","", "col1"}, TestObj.class);

readLineToObject的参数依次为sheetIdx,rowIdx,字段映射数组类型。在上面这段代码中,映射数组代表,将第一列数据写入到col2字段,第二列数据不做映射,第三列写入col1,可以看到,指定为空字串即代表不对该列进行映射。

关闭对象

reader.colse();

写入

ExcelWrite writer = new ExcelWrite(ExcelType.XLS);

写入数据表

writer.writeSheet("testSheet",
        Lists.newArrayList(testObj),
        TestObj.class,
        new String[]{"date", "col2", "f1", "f2", "i1", "i2","bl1"},
        new String[]{"日期", "", "浮点1", "浮点2", "整数1", "整数2"});

依次为sheetName,对象列表,类型,字段映射数组表头(可选)

表头设为null表示不需要表头

导出到二进制数组

byte[] byteArray = writer.exportExcel();

别忘了关闭对象

writer.colse();

Clone this wiki locally