POI : Cannot get a STRING value from a NUMERIC cell 問題解決


遇到以下報錯

自己的代碼

 

解決方式:

在cell加個setCellType()方法就可以了

cell.setCellType(CellType.STRING);

 

代碼:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

/**
 * @author xie.shilin@qq.com
 * @description xls工具類
 * @date 2020-09-15 15:39
 */
public class XlsUtil {
    public static void read(String filePath) throws IOException {
        String fileType = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length());
        InputStream stream = new FileInputStream(filePath);
        Workbook wb = null;
        if (fileType.equals("xls")) {
            wb = new HSSFWorkbook(stream);
        } else if (fileType.equals("xlsx")) {
            wb = new XSSFWorkbook(stream);
        } else {
            System.out.println("您輸入的excel格式不正確");
        }
        Sheet sheet1 = wb.getSheetAt(0);
        for (Row row : sheet1) {
            for (Cell cell : row) {
                cell.setCellType(CellType.STRING);
                System.out.print(cell.getStringCellValue() + "  ");
            }
            System.out.println();
        }
    }

    public static boolean write(String outPath) throws Exception {
        String fileType = outPath.substring(outPath.lastIndexOf(".") + 1, outPath.length());
        System.out.println(fileType);
        // 創建工作文檔對象
        Workbook wb = null;
        if (fileType.equals("xls")) {
            wb = new HSSFWorkbook();
        } else if (fileType.equals("xlsx")) {
            wb = new XSSFWorkbook();
        } else {
            System.out.println("您的文檔格式不正確!");
            return false;
        }
        // 創建sheet對象
        Sheet sheet1 = (Sheet) wb.createSheet("sheet1");
        // 循環寫入行數據
        for (int i = 0; i < 5; i++) {
            Row row = (Row) sheet1.createRow(i);
            // 循環寫入列數據
            for (int j = 0; j < 8; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue("測試" + j);
            }
        }
        // 創建文件流
        OutputStream stream = new FileOutputStream(outPath);
        // 寫入數據
        wb.write(stream);
        // 關閉文件流
        stream.close();
        return true;
    }


    public static void main(String[] args) {
        try {
            XlsUtil.read("C:\\Users\\edz\\Desktop\\banji.xlsx");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM