Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java将excel单元格从字符串格式化为数字_Java_Excel_Apache Poi - Fatal编程技术网

使用Java将excel单元格从字符串格式化为数字

使用Java将excel单元格从字符串格式化为数字,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试将第5列的格式设置为数字。我知道格式化可以通过setCellStyle完成,但我如何在下面的代码中实现同样的功能 FileInputStream ExcelFileToRead = null; HSSFWorkbook wb = null; FileOutputStream outputStream = null; short colNum = 5; try { ExcelFileToRead = new FileInputStream("config/test/test.xls"

我正在尝试将第5列的格式设置为数字。我知道格式化可以通过setCellStyle完成,但我如何在下面的代码中实现同样的功能

FileInputStream ExcelFileToRead = null;
HSSFWorkbook wb = null;
FileOutputStream outputStream = null;
short colNum = 5;

try {
 ExcelFileToRead = new FileInputStream("config/test/test.xls");
} catch (FileNotFoundException e) {
 e.printStackTrace();
}
try {
 wb = new HSSFWorkbook(ExcelFileToRead);
} catch (IOException e) {
 e.printStackTrace();
}
HSSFSheet sheet = wb.getSheetAt(0);
HSSFCell cell = null;
HSSFRow row = null;

sheet.createRow(0).createCell((short) 6).setCellValue("100");
sheet.createRow(3).createCell(colNum).setCellValue("120");
sheet.createRow(5).createCell(colNum).setCellValue("300");
sheet.createRow(11).createCell(colNum).setCellValue("500");
sheet.createRow(15).createCell(colNum).setCellValue("900");
sheet.createRow(18).createCell(colNum).setCellValue("1000");
sheet.createRow(23).createCell(colNum).setCellValue("10");
sheet.createRow(28).createCell(colNum).setCellValue("20");
sheet.createRow(30).createCell(colNum).setCellValue("30");
sheet.createRow(49).createCell(colNum).setCellValue("40");

outputStream = new FileOutputStream("config/test/test.xls");
wb.write(outputStream);
outputStream.close();

通过将CellStyle对象传递给图纸对象的setDefaultColumnStyle方法,可以设置默认列样式。格式是从您传递的字符串中解析出来的。因此,0是一个整数,0.0是小数点后1位的小数点,0.00是小数点后2位的小数点,等等。还有更多内容,您可以使用HSSFDataFormat.GetBuiltInformation查看格式列表

您还应该将值作为数字类型而不是字符串传入,否则它们的单元格值将是文本而不是数字

下面是一个将整列设置为数字的示例

public static void main(String[] args) throws Exception {
    short colNum = 5;

    FileInputStream workbookStream = new FileInputStream("config/test/test.xls");
    HSSFWorkbook workbook = new HSSFWorkbook(workbookStream);

    HSSFSheet worksheet =  workbook.getSheetAt(0);

    // set column style here
    DataFormat dataFormat = workbook.createDataFormat();
    CellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setDataFormat(dataFormat.getFormat("0"));
    worksheet.setDefaultColumnStyle(colNum, cellStyle);

    worksheet.createRow(0).createCell((short)6).setCellValue(100);
    //...
    worksheet.createRow(49).createCell(colNum).setCellValue(40);

    FileOutputStream outputStream = new FileOutputStream("config/test/test.xls");
    workbook.write(outputStream);
    outputStream.close();
}

你有没有试着使用“setCellStyle”?这里有很多关于设置风格的问题,等等。比如这个。请阅读感谢您的回复。当我尝试导入org.apache.poi.ss时,我得到的包org.apache.poi.ss不存在编译错误。不知道为什么会这样,这些包与HSSFWorkbook和您使用的其他类属于同一个.jar。我刚刚下载了这个库的最新版本,它都在poi-3.17.jar文件中。