设为首页 收藏本站
查看: 397|回复: 0

[经验分享] 使用apache POI操作Excel

[复制链接]

尚未签到

发表于 2017-1-1 07:13:29 | 显示全部楼层 |阅读模式
用apache POI 操作 Excel有几个关键的地方:
[1]读文件流 这个问题是一个IO问题 InputStreamin= new FileInputStream( /tmp/aaa.xls ); [2]如何取得Excel的操作对象 这个也就相当于,Excel的工作区,在这个里面你可以取得当前excel文件的相关信息 POIFSFileSy
用apache POI 操作 Excel有几个关键的地方:

[1]读文件流
这个问题是一个IO问题

InputStream in = new FileInputStream("/tmp/aaa.xls");   


[2]如何取得Excel的操作对象
这个也就相当于,Excel的工作区,在这个里面你可以取得当前excel文件的相关信息

POIFSFileSystem poifs = new POIFSFileSystem(fis);   
HSSFWorkbook wb = new HSSFWorkbook(poifs);   

HSSFWorkbook 对象,是我们最想得到的对象。
以后的所有操作都是从这里开始的。


[3]如何取得sheet的数目


wb.getNumberOfSheets()   


[4]如何根据index取得sheet对象



HSSFSheet sheet = wb.getSheetAt(0);   

有了Sheet就相当于取得了一张表一样。


[5]如何取得有效的行数


int rowcount = sheet.getLastRowNum();   


[6]如何根据index取得行对象


HSSFRow row = sheet.getRow(i);   

有了行对象,就可以取得每一个单元对象


[7]如何知道一个行有多少个单元

colcount = row.getLastCellNum();   


[8]如何取得一个单元对象


HSSFCell cell = row.getCell(j);   


[9]如何取得单元的值
此处仅以字符串为例

if(cell!=null){   
       System.out.println("cell is: "+cell.getStringCellValue());   
}   


下面是我的测试的完整的程序。我也是从网上找的资料,然后自己又做了测试。在此又做了整理。
感谢网上提供此参考资料的朋友。


package demo.excel;   
   
   
import java.io.File;   
import java.io.FileInputStream;   
import java.io.FileNotFoundException;   
import java.io.IOException;   
import java.io.InputStream;   
import java.util.ArrayList;   
import java.util.List;   
   
import org.apache.poi.hssf.eventusermodel.HSSFRequest;   
import org.apache.poi.hssf.model.Sheet;   
import org.apache.poi.hssf.model.Workbook;   
import org.apache.poi.hssf.usermodel.HSSFCell;   
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 ExcelDemo {   
   
    public static void main(String[] args) {   
   
        File f = new File("/home/zhangyi/dell500.xls");   
   
        if (f.exists()) {   
   
            // read   
            try {   
                InputStream fis = new FileInputStream(f);   
   
                POIFSFileSystem poifs = new POIFSFileSystem(fis);   
                HSSFWorkbook wb = new HSSFWorkbook(poifs);   
   
                List retList = new ArrayList();   
   
                System.out.println("sheet number : " + wb.getNumberOfSheets());   
                    
                    
                HSSFSheet s = wb.getSheetAt(0);   
                System.out.println("sheet obj is : "+s);   
                    
                    
                    
                    
                for (int h = 0; h < wb.getNumberOfSheets(); ++h) {   
                    List list = new ArrayList();   
   
                    HSSFSheet sheet = wb.getSheetAt(h);   
                    int rowcount = sheet.getLastRowNum();   
                    rowcount++;   
                    System.out.print("-----sheet[" + h + "]: row count = "   
                            + rowcount);   
   
                        
                    int colcount = 0;   
                    for (int i = 0; i < rowcount; ++i) {   
                        HSSFRow row = sheet.getRow(i); // i=0 indicate the first   
                        
                        // row   
                        if (row == null)   
                            continue; // without the row, break and continue;   
                           
                        if (colcount == 0) { // colunm count set to column of   
                            // the first effective row   
                            colcount = row.getLastCellNum();   
                            System.out.println(", column count = " + colcount);   
                        }   
   
                        String[] fieldValue = new String[colcount];   
                           
                        for (short j = 0; j < colcount; ++j) { // column data in   
                                                                // the current   
   
                            HSSFCell cell = row.getCell(j);   
                            // fieldValue[j] = getCellStringValue(cell);   
                            if(cell!=null){   
                                System.out.println("cell is: "+cell.getStringCellValue());   
                            }   
//                            System.out.println("cell is : " +cell.getCellComment());   
                                
                        }   
   
                        list.add(fieldValue);   
                    }   
   
                    retList.add(list);   
                }   
   
            } catch (FileNotFoundException e) {   
                // TODO Auto-generated catch block   
                e.printStackTrace();   
            } catch (IOException e) {   
                // TODO Auto-generated catch block   
                e.printStackTrace();   
            }   
   
        }   
   
    }   
   
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322115-1-1.html 上篇帖子: apache +tomcat+ 集群 多域名 下篇帖子: tomcat+apache+jk的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表