[Java] java Excel操作类 →→→→→进入此内容的聊天室

来自 , 2019-05-05, 写在 Java, 查看 130 次.
URL http://www.code666.cn/view/1905aeda
  1.  
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.Date;
  10. import java.util.List;
  11.  
  12. import org.apache.poi.hssf.usermodel.HSSFCell;
  13. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  14. import org.apache.poi.hssf.usermodel.HSSFRow;
  15. import org.apache.poi.hssf.usermodel.HSSFSheet;
  16. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  17. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  18.  
  19. public class ExcelOpearate {
  20.  
  21.     /**
  22.      * 读取Excel的内容,第一维数组储存的是一行中格列的值,二维数组中储存的是多少行
  23.      *
  24.      * @param file
  25.      *            读取数据源Excel
  26.      * @param ignoreRows
  27.      *            读取数据忽略的行数,
  28.      * @return 读出的Excel中数据的内容
  29.      * @throws IOException
  30.      */
  31.     public static String[][] getData(File file, int ignoreRows)
  32.     throws IOException {
  33.         List<String[]> result = new ArrayList<String[]>();
  34.         int rowSize = 0;
  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.getNumericCellValue()));
  80.                             }
  81.                             break;
  82.                         case HSSFCell.CELL_TYPE_FORMULA:
  83.                             // 导入时如果为公式生成的数据则无值
  84.                             if (!cell.getStringCellValue().equals("")) {
  85.                                 value = cell.getStringCellValue();
  86.                             } else {
  87.                                 value = cell.getNumericCellValue() + "";
  88.                             }
  89.                             break;
  90.  
  91.                         case HSSFCell.CELL_TYPE_BLANK:
  92.                             value = "";
  93.                             break;
  94.  
  95.                         case HSSFCell.CELL_TYPE_ERROR:
  96.                             value = "";
  97.                             break;
  98.  
  99.                         case HSSFCell.CELL_TYPE_BOOLEAN:
  100.                             value = (cell.getBooleanCellValue() == true ? "Y"
  101.                                      : "N");
  102.                             break;
  103.  
  104.                         default:
  105.                             value = "";
  106.                         }
  107.                     }
  108.                     if (columnIndex == 0 && value.trim().equals("")) {
  109.                         break;
  110.                     }
  111.                     values[columnIndex] = rightTrim(value);
  112.                     hasValue = true;
  113.                 }
  114.                 if (hasValue) {
  115.                     result.add(values);
  116.                 }
  117.             }
  118.         }
  119.         in.close();
  120.         String[][] returnArray = new String[result.size()][rowSize];
  121.         for (int i = 0; i < returnArray.length; i++) {
  122.             returnArray[i] = (String[]) result.get(i);
  123.         }
  124.         return returnArray;
  125.  
  126.     }
  127.  
  128.     /**
  129.      * 去掉字符串右边的空格
  130.      *
  131.      * @param str
  132.      *            要处理的字符串
  133.      * @return 处理后的字符串
  134.      */
  135.     public static String rightTrim(String str) {
  136.         // TODO Auto-generated method stub
  137.         if (str == "") {
  138.             return "";
  139.         }
  140.         int length = str.length();
  141.         for (int i = length - 1; i >= 0; i--) {
  142.             if (str.charAt(i) != 0x20) {
  143.                 break;
  144.             }
  145.             length--;
  146.         }
  147.         return str.substring(0, length);
  148.     }
  149. }

回复 "java Excel操作类"

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

captcha