在实现TTS功能的时候,需要根据话术的变量动态导出Excel模板,如果不设置单元格的数据类型,默认情况下是常规类型,这样在填入手机号等数字类型的数据时,Excel有时会自动转换格式,导致读入的数据会有问题。所以导出的时候需要设置列的默认数据类型为文本类型。
在导出的时候,使用了EasyPOI,本来easyPOI设置的单元格的默认数据类型即为文本类型,但是如果导出模板的时候,由于没有数据,所以空单元格的数据类型还是常规类型。因此这个时候需要调用方法来设置整个列的数据类型为文本类型。看了下EasyPOI的源码,没有发现设置数据类型的方法,所以直接调用了原生的POI方法来设置数据类型。
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, colList, Collections.emptyList()); CellStyle textStyle = workbook.createCellStyle(); textStyle.setDataFormat((short) BuiltinFormats.getBuiltinFormat("TEXT")); Sheet sheet = workbook.getSheet(sheetName); for(int i = 0; i < colList.size(); i++) { sheet.setDefaultColumnStyle(i, textStyle); }
这样导出的Excel所有的列的数据类型都为文本类型