[Java] java 读取Excel内容 →→→→→进入此内容的聊天室

来自 , 2021-03-15, 写在 Java, 查看 127 次.
URL http://www.code666.cn/view/443cb001
  1. import java.io.BufferedInputStream;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.Date;
  9. import java.util.List;
  10.  
  11. import org.apache.poi.hssf.usermodel.HSSFCell;
  12. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  13. import org.apache.poi.hssf.usermodel.HSSFRow;
  14. import org.apache.poi.hssf.usermodel.HSSFSheet;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  17.  
  18. public class ExcelOpearate {
  19.  
  20.         /**
  21.          * 读取Excel的内容,第一维数组储存的是一行中格列的值,二维数组中储存的是多少行
  22.          *
  23.          * @param file
  24.          *            读取数据源Excel
  25.          * @param ignoreRows
  26.          *            读取数据忽略的行数,
  27.          * @return 读出的Excel中数据的内容
  28.          * @throws IOException
  29.          */
  30.         public static String[][] getData(File file, int ignoreRows)
  31.                         throws IOException {
  32.                 List<String[]> result = new ArrayList<String[]>();
  33.                 int rowSize = 0;
  34.                 BufferedInputStream in = new BufferedInputStream(new FileInputStream(
  35.                                 file));
  36.                 // 打开HSSFWorkBook
  37.                 POIFSFileSystem fs = new POIFSFileSystem(in);
  38.                 HSSFWorkbook wb = new HSSFWorkbook(fs);
  39.                 HSSFCell cell = null;
  40.                 for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
  41.                         HSSFSheet st = wb.getSheetAt(sheetIndex);
  42.                         // 第一行为标题不读取
  43.                         for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
  44.                                 HSSFRow row = st.getRow(rowIndex);
  45.                                 if (row == null) {
  46.                                         continue;
  47.                                 }
  48.                                 int tempRowSize = row.getLastCellNum() + 1;
  49.                                 if (tempRowSize > rowSize) {
  50.                                         rowSize = tempRowSize;
  51.                                 }
  52.                                 String[] values = new String[rowSize];
  53.                                 Arrays.fill(values, "");
  54.                                 boolean hasValue = false;
  55.                                 for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
  56.                                         String value = "";
  57.                                         cell = row.getCell(columnIndex);
  58.                                         if (cell != null) {
  59.                                                 // 注意:一定要設成這個。否則可能會出現亂碼
  60.                                                 cell.setEncoding(HSSFCell.ENCODING_UTF_16);
  61.                                                 switch (cell.getCellType()) {
  62.                                                 case HSSFCell.CELL_TYPE_STRING:
  63.                                                         value = cell.getStringCellValue();
  64.                                                         break;
  65.  
  66.                                                 case HSSFCell.CELL_TYPE_NUMERIC:
  67.                                                         if (HSSFDateUtil.isCellDateFormatted(cell)) {
  68.                                                                 Date date = cell.getDateCellValue();
  69.                                                                 if (date != null) {
  70.                                                                         value = new SimpleDateFormat("yyyy-MM-dd")
  71.                                                                                         .format(date);
  72.                                                                 } else {
  73.                                                                         value = "";
  74.                                                                 }
  75.                                                         } else {
  76.                                                                 // value = new DecimalFormat("0").format(cell
  77.                                                                 // .getNumericCellValue());
  78.                                                                 DecimalFormat df = new DecimalFormat("#");// 解决读取长数据为科学计数的问题
  79.                                                                 value = String.valueOf(df.format(cell
  80.                                                                                 .getNumericCellValue()));
  81.                                                         }
  82.                                                         break;
  83.                                                 case HSSFCell.CELL_TYPE_FORMULA:
  84.                                                         // 导入时如果为公式生成的数据则无值
  85.                                                         if (!cell.getStringCellValue().equals("")) {
  86.                                                                 value = cell.getStringCellValue();
  87.                                                         } else {
  88.                                                                 value = cell.getNumericCellValue() + "";
  89.                                                         }
  90.                                                         break;
  91.  
  92.                                                 case HSSFCell.CELL_TYPE_BLANK:
  93.                                                         value = "";
  94.                                                         break;
  95.  
  96.                                                 case HSSFCell.CELL_TYPE_ERROR:
  97.                                                         value = "";
  98.                                                         break;
  99.  
  100.                                                 case HSSFCell.CELL_TYPE_BOOLEAN:
  101.                                                         value = (cell.getBooleanCellValue() == true ? "Y"
  102.                                                                         : "N");
  103.                                                         break;
  104.  
  105.                                                 default:
  106.                                                         value = "";
  107.                                                 }
  108.                                         }
  109.                                         if (columnIndex == 0 && value.trim().equals("")) {
  110.                                                 break;
  111.                                         }
  112.                                         values[columnIndex] = rightTrim(value);
  113.                                         hasValue = true;
  114.                                 }
  115.                                 if (hasValue) {
  116.                                         result.add(values);
  117.                                 }
  118.                         }
  119.                 }
  120.                 in.close();
  121.                 String[][] returnArray = new String[result.size()][rowSize];
  122.                 for (int i = 0; i < returnArray.length; i++) {
  123.                         returnArray[i] = (String[]) result.get(i);
  124.                 }
  125.                 return returnArray;
  126.  
  127.         }
  128.  
  129.         /**
  130.          * 去掉字符串右边的空格
  131.          *
  132.          * @param str
  133.          *            要处理的字符串
  134.          * @return 处理后的字符串
  135.          */
  136.         public static String rightTrim(String str) {
  137.                 // TODO Auto-generated method stub
  138.                 if (str == "") {
  139.                         return "";
  140.                 }
  141.                 int length = str.length();
  142.                 for (int i = length - 1; i >= 0; i--) {
  143.                         if (str.charAt(i) != 0x20) {
  144.                                 break;
  145.                         }
  146.                         length--;
  147.                 }
  148.                 return str.substring(0, length);
  149.         }
  150. }

回复 "java 读取Excel内容"

这儿你可以回复上面这条便签

captcha