-
Notifications
You must be signed in to change notification settings - Fork 0
EXCEL
BigBaicai edited this page Nov 22, 2018
·
1 revision
excel文件包含2种格式,xls和xlsx,本工具集中均使用ExcelReader ExcelWrite处理,位于joycai.utils.sheet.excel包下
- sheetIdx 从0开始
- rowIdx 从0开始
在创建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();