问题如下: 设置模板时,如果没有设置单元格格式为文本,长串数字 将会被篡改
解决方法1:逐步设置单个单元格格式为文本,直接贴上代码
@Test
public void testWrite07() throws Exception {
//创建工作簿
Workbook workbook = new XSSFWorkbook();
//在工作簿中出创建出sheet,并命名
Sheet sheet = workbook.createSheet("疫苗接种统计");
//创建行第一行
Row row = sheet.createRow(0);
//在第一行创建出第1个单元格 ,位置 为 1-1
Cell cell11 = row.createCell(0);
//写入文字
cell11.setCellValue("今日接种人数统计");
//在第一行创建出第2个单元格, 位置 为 1-2
Cell cell12 = row.createCell(1);
//写入位子
cell12.setCellValue("666人");
//设置单元格格式为文本格式
CellStyle cellStyle = workbook.createCellStyle();
DataFormat dataFormat = workbook.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("@"));
//设置第一行为文本格式
cell11.setCellStyle(cellStyle);//设置位置为1-1的单元格的格式为文本格式
}
解决方法2:直接设置整列的单元格格式为"文本",直接贴上代码
@Test
public void testWrite07() throws Exception {
//创建工作簿
Workbook workbook = new XSSFWorkbook();
//在工作簿中出创建出sheet,并命名
Sheet sheet = workbook.createSheet("疫苗接种统计");
CellStyle cellStyle = workbook.createCellStyle();
DataFormat dataFormat = workbook.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("@"));//这个风格代表的是文本格式
sheet.setDefaultColumnStyle(1, cellStyle);//设置第1列,对应格式
sheet.setDefaultColumnStyle(2, cellStyle);//设置第2列,对应格式
sheet.setDefaultColumnStyle(3, cellStyle);//设置第3列,对应格式
//创建行第一行
Row row = sheet.createRow(0);
//在第一行创建出第1个单元格 ,位置 为 1-1
Cell cell11 = row.createCell(0);
//写入文字
cell11.setCellValue("今日接种人数统计");
//在第一行创建出第2个单元格, 位置 为 1-2
Cell cell12 = row.createCell(1);
//写入位子
cell12.setCellValue("666人");
}
因为列是从0开始,所以会发现如下图,0列和4列还是常规格式, 1列.2列.3列为文本格式;如下图