<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          讀取Excel文件注意的點(diǎn)

          共 19433字,需瀏覽 39分鐘

           ·

          2024-03-29 18:00

          不廢話,直接上代碼

          getSampleId( "Sheet1" , "B" , 4 , filepath);

          getSampleData("PeakSumCalcT", "C", "H", filepath);

          支持xls如下版本

          BIFF8 format (from Excel versions 97/2000/XP/2003)

            Excel 5.0/7.0 (BIFF5) format.

                
                  import sapphire.util.*;
                
                
                  import java.text.*;
                
                
                  import java.util.ArrayList;
                
                
                  import java.util.Iterator;
                
                
                  import java.util.LinkedHashMap;
                
                
                  import java.util.List;
                
                
                  import java.util.Map;
                
                
                  import java.util.regex.Matcher;
                
                
                  import java.util.regex.Pattern;
                
                
                  import java.io.File;
                
                
                  import java.io.FileInputStream;
                
                
                  import java.io.IOException;
                
                
                  import java.io.InputStream;
                
                
                  import java.math.BigDecimal;
                
                
                  import java.math.RoundingMode;
                
                
                  import org.apache.poi.ss.usermodel.Cell;
                
                
                  import org.apache.poi.ss.usermodel.Row;
                
                
                  import org.apache.poi.hssf.OldExcelFormatException;
                
                
                  import org.apache.poi.hssf.usermodel.HSSFCell;
                
                
                  import org.apache.poi.hssf.usermodel.HSSFSheet;
                
                
                  import org.apache.poi.hssf.usermodel.HSSFWorkbook;
                
                
                  import jxl.read.biff.BiffException;
                
                
                  import org.apache.poi.xssf.usermodel.XSSFCell;
                
                
                  
                    

          public class ROUTINE_ShangHai_LC_POI36 { @SuppressWarnings("static-access") public static DataSet parseResultFile(final String filepath, final String instrumentid) throws ParseException { final DataSet ds = new DataSet(); ds.addColumn("sdcid", 0); ds.addColumn("keyid1", 0); ds.addColumn("instrumentfield", 0); ds.addColumn("value", 0); ds.addColumn("replicateid", 0); ds.addColumn("sdidata_s_instrumentid", 0); String filetype = filepath.substring(filepath.lastIndexOf(".") + 1); System.out.println("filetype: "+filetype); String SampleIDRegEx ="([A-Z]{3}\\d{6}-\\d{5}|[A-Z]-\\d{6}-\\d{5}|\\d{2}[A-Z]\\d{6}-[A-Z]\\d{3})"; System.out.println("SampleIDRegEx: "+SampleIDRegEx); @SuppressWarnings("unused") String sampleid = null; //getSampleId String tempString = getSampleId("Sheet1", "B", 4, filepath); if(matcheString(tempString,SampleIDRegEx)) { sampleid = tempString; System.out.println("sampleid: "+sampleid); } //getSampleData List<Map<String, String>> columnData = getSampleData("PeakSumCalcT", "C", "H", filepath); for (Map<String, String> map : columnData) { for (Map.Entry<String, String> entry : map.entrySet()) { final int row = ds.addRow(); ds.setValue(row, "sdcid", "Sample"); ds.setValue(row, "keyid1", sampleid); ds.setValue(row, "instrumentfield", entry.getKey()); ds.setValue(row, "value", entry.getValue().contains("<")?"0":entry.getValue()); ds.setValue(row, "sdidata_s_instrumentid", (instrumentid != null) ? instrumentid.trim() : ""); } } return ds; } public static List<Map<String, String>> getSampleData(String sheetName, String keyColumnName, String valueColumnName, String filepath) { List<Map<String, String>> allData = new ArrayList<>(); try { Map<String, String> columnData = readExcelColumnData(sheetName, keyColumnName, valueColumnName, filepath); allData.add(columnData); }catch(OldExcelFormatException ex) { System.out.println("Falling back to jxl due to old Excel format... \n" +ex.getMessage()); try { allData = readExcelColumnDataJxl(sheetName, keyColumnName, valueColumnName, filepath); } catch (BiffException | IOException e) { e.printStackTrace(); } }catch (IOException e) { e.printStackTrace(); } return allData; } public static String getSampleId(String sheetName, String columnName, int rowIndex, String filePath) { String cellValue = ""; try { String tempString = getCellValueXLS(sheetName, columnName, rowIndex, filePath); cellValue = tempString; }catch(OldExcelFormatException ex) { System.out.println("Falling back to jxl due to old Excel format... \n" +ex.getMessage()); String tempString2 = getCellValueJxlXls(sheetName, columnName, rowIndex, filePath); cellValue = tempString2; }catch (IOException e) { e.printStackTrace(); } return cellValue; } //BIFF8 format (from Excel versions 97/2000/XP/2003) public static String getCellValueJxlXls(String sheetName, String columnName, int rowIndex, String filePath) { String cellValue = ""; try { FileInputStream fis = new FileInputStream(filePath); jxl.Workbook rwb = jxl.Workbook.getWorkbook(fis); jxl.Sheet sheet = rwb.getSheet(sheetName); if(rowIndex >= sheet.getRows() || getColNumber(columnName) >=sheet.getColumns()) { System.out.println("Invalid row or column number."); return null; } jxl.Cell cell = sheet.getCell(getColNumber(columnName), rowIndex-1); cellValue = cell.getContents(); fis.close(); } catch (Exception e) { e.printStackTrace(); } return cellValue; } //Excel 5.0/7.0 (BIFF5) format. public static String getCellValueXLS(String sheetName, String columnName, int rowIndex, String filePath) throws IOException { String cellValue = null;
          try (InputStream ExcelFileToRead = new FileInputStream(filePath)) { HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead);
          HSSFSheet sheet = (HSSFSheet) wb.getSheet(sheetName); if (sheet != null) { Row row = sheet.getRow(rowIndex - 1); if (row != null) { Cell cell = row.getCell(getColNumber(columnName)); if (cell != null) { cellValue = cell.getStringCellValue(); } } } ExcelFileToRead.close(); }
          return cellValue; } //BIFF8 format (from Excel versions 97/2000/XP/2003) public static String getCellValueXls(HSSFCell cell) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: return cell.getStringCellValue(); case HSSFCell.CELL_TYPE_NUMERIC: double value = cell.getNumericCellValue(); BigDecimal decimalValue = BigDecimal.valueOf(value); DecimalFormat df = new DecimalFormat("#.###");
          if (decimalValue.compareTo(BigDecimal.valueOf(0.001)) < 0) { return df.format(decimalValue.setScale(3, RoundingMode.HALF_UP)); } return decimalValue.setScale(3, RoundingMode.HALF_UP).toPlainString();
          case HSSFCell.CELL_TYPE_BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); case HSSFCell.CELL_TYPE_FORMULA: return cell.getCellFormula(); case HSSFCell.CELL_TYPE_BLANK: return "0"; default: return ""; } } //BIFF8 format (from Excel versions 97/2000/XP/2003) public static Map<String, String> readExcelColumnData(String sheetName, String keyColumnName, String valueColumnName, String filepath) throws IOException { FileInputStream fls = new FileInputStream(filepath); int keyColumnIndex = getColNumber(keyColumnName); int valueColumnIndex = getColNumber(valueColumnName); HSSFWorkbook wb = new HSSFWorkbook(fls); HSSFSheet sheet = (HSSFSheet) wb.getSheet(sheetName); Map<String, String> columnData = new LinkedHashMap<>();
          Iterator<Row> rowIterator = sheet.rowIterator(); String keyString = null; String valueString = null; if (sheet != null) { while (rowIterator.hasNext()) { Row row = rowIterator.next(); if (row != null) { HSSFCell cellKey = (HSSFCell) row.getCell(keyColumnIndex); if (cellKey != null) { keyString = cellKey.getStringCellValue(); } HSSFCell cellValue = (HSSFCell) row.getCell(valueColumnIndex); if (cellValue != null) { valueString = getCellValueXls(cellValue); } } columnData.put(keyString, valueString); } } fls.close();
          return columnData; } public static String StringtoBigDecimal(String value) { // if (decimalValue.compareTo(BigDecimal.valueOf(0.001)) < 0) { // return df.format(decimalValue.setScale(3, RoundingMode.HALF_UP)); //return decimalValue.setScale(3, RoundingMode.HALF_UP).toPlainString(); if (value == null || value.isEmpty()) { return ""; } try { // 將字符串轉(zhuǎn)換為BigDecimal BigDecimal decimalValue = new BigDecimal(value); // 使用DecimalFormat控制輸出的小數(shù)位數(shù)的格式 DecimalFormat df = new DecimalFormat("#.###"); // 轉(zhuǎn)換為3位小數(shù),并四舍五入 decimalValue = decimalValue.setScale(3, BigDecimal.ROUND_HALF_UP); // 返回格式化后的字符串 return df.format(decimalValue); } catch (NumberFormatException e) { return ""; } } //Excel 5.0/7.0 (BIFF5) format. public static List<Map<String, String>> readExcelColumnDataJxl(String sheetName, String keyColumnName, String valueColumnName, String filepath) throws IOException, BiffException { int keyColumnIndex = getColNumber(keyColumnName); int valueColumnIndex = getColNumber(valueColumnName);
          File excelFile = new File(filepath); jxl.Workbook wb = jxl.Workbook.getWorkbook(excelFile); jxl.Sheet sheet = wb.getSheet(sheetName);
          List<Map<String, String>> allData = new ArrayList<>();
          for (int i = 0; i < sheet.getRows(); i++) { jxl.Cell keyCell = null; jxl.Cell valueCell = null; if (i < sheet.getRows() && keyColumnIndex < sheet.getColumns()) { keyCell = (jxl.Cell) sheet.getCell(keyColumnIndex, i); } if (i < sheet.getRows() && valueColumnIndex < sheet.getColumns()) { valueCell = (jxl.Cell) sheet.getCell(valueColumnIndex, i); }
          String keyString = keyCell != null ? ((jxl.Cell) keyCell).getContents() : ""; String valueString = valueCell != null ? ((jxl.Cell) valueCell).getContents() : "";
          Map<String, String> columnData = new LinkedHashMap<>(); columnData.put(keyString, StringtoBigDecimal(valueString));
          allData.add(columnData); }
          wb.close();
          return allData; } // 獲取單元格的值HSSFCell public static String getCellValue(XSSFCell cell) { switch (cell.getCellType()) { case XSSFCell.CELL_TYPE_STRING: return cell.getStringCellValue(); case XSSFCell.CELL_TYPE_NUMERIC: double value = cell.getNumericCellValue(); BigDecimal decimalValue = BigDecimal.valueOf(value); DecimalFormat df = new DecimalFormat("#.###"); if (decimalValue.compareTo(BigDecimal.valueOf(0.001)) < 0) { return df.format(decimalValue.setScale(3, RoundingMode.HALF_UP)); } return decimalValue.setScale(3, RoundingMode.HALF_UP).toPlainString();
          case XSSFCell.CELL_TYPE_BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); case XSSFCell.CELL_TYPE_FORMULA: return cell.getCellFormula(); case XSSFCell.CELL_TYPE_BLANK: return "0"; default: return ""; } } //Get Column index by English letters public static int getColNumber(String colName) { int colIndex = 0; for (int i = 0; i < colName.length(); i++) { char c = colName.toUpperCase().charAt(i); colIndex = (colIndex * 26) + ((int)c - (int)'A' + 1); } colIndex = colIndex - 1; // subtract 1 to match array indexes if(colIndex > 16383) { // check if colIndex exceeds "XFD" throw new IllegalArgumentException("Column index " + colName + " exceeds Excel's limit XFD (16384 columns)"); } return colIndex; }
          public static boolean matcheString(final String str, final String pattern) { final Pattern p = Pattern.compile(pattern); final Matcher m = p.matcher(str); return m.matches(); } }


          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一区中文字幕在线观看 | 美女被操到喷水 | 日本黄色日批视频网站 | 在线浏览亚洲性图 | 免费A片在线看 |