博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java读取Excel内容
阅读量:6437 次
发布时间:2019-06-23

本文共 6143 字,大约阅读时间需要 20 分钟。

hot3.png

原文地址:

首先下载poi.jar,将jar包放到项目下,并将需要读取的excel文件(本例子是.xls格式的excel文件)放入根目录即可。

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");//其他格式的excel不可以        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
 result = new ArrayList();        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);    }}

转载于:https://my.oschina.net/liuyuanyuangogo/blog/369389

你可能感兴趣的文章
Linux查看物理CPU个数、核数、逻辑CPU个数
查看>>
openlayers 2 高亮显示元素以及通过属性查询高亮某一元素
查看>>
VMware克隆centos系统后不能识别eth0
查看>>
【MYSQL】总结MySQL中对表内容的关联运算(join)
查看>>
我的友情链接
查看>>
换光纤猫 ZXA10 F420
查看>>
CentOS 6.0安装ipvsadm 1.26错误笔录
查看>>
关于“无法完成该动作 到Microsoft Exchange的连接不可用”的解决办法
查看>>
Heartbeat VIP/IP 与 别名/辅助IP
查看>>
【十三单元】 软件安装 yum源配置
查看>>
PaaS云计算平台服务商大集合
查看>>
jquery 实现返回顶部功能
查看>>
Iterator
查看>>
使用Nexus创建私服
查看>>
我的友情链接
查看>>
iptables
查看>>
学习oop知识之OOP的封装
查看>>
Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
查看>>
黑暗的富士康服务器被黑厂商用户名密码被泄
查看>>
Android学习建议
查看>>