在實現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所有的列的數據類型都為文本類型