源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java读取Excel文件内容的简单实例

  • 时间:2021-12-28 18:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java读取Excel文件内容的简单实例
借助于apathe的[url=http://xiazai.jb51.net/201311/yuanma/poi(jb51.net).rar]poi.jar[/url],由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取excel的内容并展出出结果,代码如下:
[u]复制代码[/u] 代码如下:
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class ExcelOperate {     public static void main(String[] args) throws Exception {        File file = new File("ExcelDemo.xls");        String[][] result = getData(file, 1);        int rowLength = result.length;        for(int i=0;i<rowLength;i++) {            for(int j=0;j<result[i].length;j++) {               System.out.print(result[i][j]+"\t\t");            }            System.out.println();        }     }     /**      * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行      * @param file 读取数据的源Excel      * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1      * @return 读出的Excel中数据的内容      * @throws FileNotFoundException      * @throws IOException      */     public static String[][] getData(File file, int ignoreRows)            throws FileNotFoundException, IOException {        List<String[]> result = new ArrayList<String[]>();        int rowSize = 0;        BufferedInputStream in = new BufferedInputStream(new FileInputStream(               file));        // 打开HSSFWorkbook        POIFSFileSystem fs = new POIFSFileSystem(in);        HSSFWorkbook wb = new HSSFWorkbook(fs);        HSSFCell cell = null;        for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {            HSSFSheet st = wb.getSheetAt(sheetIndex);            // 第一行为标题,不取            for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {               HSSFRow row = st.getRow(rowIndex);               if (row == null) {                   continue;               }               int tempRowSize = row.getLastCellNum() + 1;               if (tempRowSize > rowSize) {                   rowSize = tempRowSize;               }               String[] values = new String[rowSize];               Arrays.fill(values, "");               boolean hasValue = false;               for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {                   String value = "";                   cell = row.getCell(columnIndex);                   if (cell != null) {                      // 注意:一定要设成这个,否则可能会出现乱码                      cell.setEncoding(HSSFCell.ENCODING_UTF_16);                      switch (cell.getCellType()) {                      case HSSFCell.CELL_TYPE_STRING:                          value = cell.getStringCellValue();                          break;                      case HSSFCell.CELL_TYPE_NUMERIC:                          if (HSSFDateUtil.isCellDateFormatted(cell)) {                             Date date = cell.getDateCellValue();                             if (date != null) {                                 value = new SimpleDateFormat("yyyy-MM-dd")                                        .format(date);                             } else {                                 value = "";                             }                          } else {                             value = new DecimalFormat("0").format(cell                                    .getNumericCellValue());                          }                          break;                      case HSSFCell.CELL_TYPE_FORMULA:                          // 导入时如果为公式生成的数据则无值                          if (!cell.getStringCellValue().equals("")) {                             value = cell.getStringCellValue();                          } else {                             value = cell.getNumericCellValue() + "";                          }                          break;                      case HSSFCell.CELL_TYPE_BLANK:                          break;                      case HSSFCell.CELL_TYPE_ERROR:                          value = "";                          break;                      case HSSFCell.CELL_TYPE_BOOLEAN:                          value = (cell.getBooleanCellValue() == true ? "Y"                                 : "N");                          break;                      default:                          value = "";                      }                   }                   if (columnIndex == 0 && value.trim().equals("")) {                      break;                   }                   values[columnIndex] = rightTrim(value);                   hasValue = true;               }               if (hasValue) {                   result.add(values);               }            }        }        in.close();        String[][] returnArray = new String[result.size()][rowSize];        for (int i = 0; i < returnArray.length; i++) {            returnArray[i] = (String[]) result.get(i);        }        return returnArray;     }     /**      * 去掉字符串右边的空格      * @param str 要处理的字符串      * @return 处理后的字符串      */      public static String rightTrim(String str) {        if (str == null) {            return "";        }        int length = str.length();        for (int i = length - 1; i >= 0; i--) {            if (str.charAt(i) != 0x20) {               break;            }            length--;        }        return str.substring(0, length);     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部