zss
2024-11-26 d6e076273a920c1f71ddb89e6c0cc8aa0cece368
csv预览的文件含公式的没有显示
已修改1个文件
54 ■■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -27,6 +27,9 @@
import com.yuanchu.mom.service.*;
import com.yuanchu.mom.utils.*;
import com.yuanchu.mom.vo.*;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Value;
@@ -483,11 +486,60 @@
                //获取最后一行的num,即总行数。此处从0开始
                int maxRow = sheet.getLastRowNum();
                for (int row = 0; row <= maxRow; row++) {
                    XSSFRow xssfRow = sheet.getRow(row);
                    //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
                    int maxRol = sheet.getRow(row).getLastCellNum();
                    StringBuilder aLine = new StringBuilder();
                    for (int rol = 0; rol < maxRol; rol++) {
                    /*for (int rol = 0; rol < maxRol; rol++) {
                        aLine.append(sheet.getRow(row).getCell(rol)).append(",");
                    }*/
                    for (int rol = 0; rol < maxRol; rol++) {
                        XSSFCell cell = xssfRow.getCell(rol);
                        if (cell == null) {
                            aLine.append(",");
                        } else {
                            switch (cell.getCellType()) {
                                case FORMULA:
                                    // 计算公式并获取结果
                                    CellValue cellValue = xssfWorkbook.getCreationHelper().createFormulaEvaluator().evaluate(cell);
                                    switch (cellValue.getCellType()) {
                                        case NUMERIC:
                                            String formattedValue = String.format("%.4f", cellValue.getNumberValue());
                                            aLine.append(formattedValue);
                                            break;
                                        case STRING:
                                            aLine.append(cellValue.getStringValue());
                                            break;
                                        case BOOLEAN:
                                            aLine.append(cellValue.getBooleanValue());
                                            break;
                                        case ERROR:
                                            aLine.append("#ERR!");
                                            break;
                                        default:
                                            aLine.append("");
                                            break;
                                    }
                                    break;
                                case NUMERIC:
                                    String formattedValue = String.format("%.4f", cell.getNumericCellValue());
                                    aLine.append(formattedValue);
                                    break;
                                case STRING:
                                    aLine.append(cell.getStringCellValue());
                                    break;
                                case BOOLEAN:
                                    aLine.append(cell.getBooleanCellValue());
                                    break;
                                case ERROR:
                                    aLine.append("#ERR!");
                                    break;
                                default:
                                    aLine.append("");
                                    break;
                            }
                            aLine.append(",");
                        }
                    }
                    String substring = aLine.substring(0, aLine.length() - 1);
                    result.append(substring).append("\n");