• Java 实现追加excle文件内容


    Java 实现追加excle文件内容

    一、示例一:excle(.xlsx)

    //jar
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.logging.Logger;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    import com.xyzq.kettle.dao.KettleDao;
    import com.xyzq.kettle.entity.KettleEntity;
    import com.xyzq.pub.Pub;
    
    
        //实现方法
        public void makeExcle(List<KettleEntity> list){
            logger.info("生成excle:start");
            String filepath = exl_sh_path+"/"+list.get(0).getSysName();
            String filename = "P_gp_"+list.get(0).getSysName()+".xlsx" ;
            //判断文件夹是否存在,不存在则创建
            try {
                Pub.checkPath(filepath);
            } catch (InterruptedException e1) {
                e1.printStackTrace();
                logger.info("文件夹创建异常:"+e1.toString());
            }
            //判断文件是否存在,存在则追加,否则新增
            // todo:
            File file = new File(filepath+"/"+filename); 
            XSSFWorkbook wb =null;
            XSSFSheet sheet = null;
            InputStream input = null;
            FileOutputStream output=null;
            try {
                wb = new XSSFWorkbook();
                input = new FileInputStream(file);
                wb = (XSSFWorkbook) WorkbookFactory.create(input);
                if(wb != null){
                    //获取文件的指定工作表
                    sheet =wb.getSheet("job");
                    output = new FileOutputStream(filepath+"/"+filename,false);
                    //获取最大行数
                    //int rownum = sheet.getPhysicalNumberOfRows();
                    int index = sheet.getLastRowNum()+1;
                    logger.info("index>>>:"+index);
                    String cmdStr = "";
                    if(list.size() > 0){
                        for(int i = 0; i < list.size(); i++){
                            cmdStr = "";
                            if("自然日".equals(list.get(i).getDataType())){
                                cmdStr = "sh "+pan_path+"/"+list.get(i).getSysName()+"/"+list.get(i).getPanName()+".sh -p${yes_date} -s${yes_date} -e${curr_date}";
                            }else if("交易日".equals(list.get(i).getDataType())){
                                cmdStr = "sh "+pan_path+"/"+list.get(i).getSysName()+"/"+list.get(i).getPanName()+".sh -p${start_date} -s${start_date} -e${end_date}";
                            }
                            //插入excle
                            XSSFRow row = null;
                            row = sheet.createRow(index+i);
                            XSSFCell cell_flow = row.createCell(0);
                            XSSFCell cell_job = row.createCell(2);
                            XSSFCell cell_cmd = row.createCell(6);
                            cell_flow.setCellValue("F_gp_"+list.get(i).getSysName());
                            cell_job.setCellValue("J_gp_"+list.get(i).getTableName());
                            cell_cmd.setCellValue(cmdStr);
                        }
                    }else{
                        logger.info("待处理数据为空");
                    }   
                    output.flush();
                    wb.write(output);
                    if (input != null){
                        input.close();
                    }
                    output.close();
                }    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                logger.info("makeExcle>获取exlce数据异常:"+e.toString());
            }
            logger.info("生成excle:end");
        }

    二、示例二:excle2007(.xls)

    //jar
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.logging.Logger;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    import com.xyzq.kettle.dao.KettleDao;
    import com.xyzq.kettle.entity.KettleEntity;
    import com.xyzq.pub.Pub;
    
      //实现方法
      public void makeExcle2007(List<KettleEntity> list){
            logger.info("生成excle:start");
            String filepath = exl_sh_path+"/"+list.get(0).getSysName();
            String filename = "P_gp_"+list.get(0).getSysName()+".xlsx" ;
            //判断文件夹是否存在,不存在则创建
            try {
                Pub.checkPath(filepath);
            } catch (InterruptedException e1) {
                e1.printStackTrace();
                logger.info("文件夹创建异常:"+e1.toString());
            }
            //判断文件是否存在,存在则追加,否则新增
            // todo:
             
            
            try {
                FileInputStream fileInput = new FileInputStream(filepath+"/"+filename);
                POIFSFileSystem poiFile = new POIFSFileSystem(fileInput);
                XSSFWorkbook wb = new XSSFWorkbook(fileInput);
                XSSFSheet sheet = null;
                if(wb != null){
                    //获取文件的指定工作表
                    sheet =wb.getSheet("job");
                    //获取最大行数
                    //int rownum = sheet.getPhysicalNumberOfRows();
                    int index = sheet.getLastRowNum();
                    FileOutputStream out=new FileOutputStream(filepath+"/"+filename);
                    XSSFRow row = null;
                    String cmdStr = "";
                    if(list.size() > 0){
                        for(int i = 0; i < list.size(); i++){
                            cmdStr = "";
                            if("自然日".equals(list.get(i).getDataType())){
                                cmdStr = "sh "+pan_path+"/"+list.get(i).getSysName()+"/"+list.get(i).getPanName()+".sh -p${yes_date} -s${yes_date} -e${curr_date}";
                            }else if("交易日".equals(list.get(i).getDataType())){
                                cmdStr = "sh "+pan_path+"/"+list.get(i).getSysName()+"/"+list.get(i).getPanName()+".sh -p${start_date} -s${start_date} -e${end_date}";
                            }
                            //插入excle
                            row = sheet.createRow(index+i);
                            XSSFCell cell_flow = row.createCell(0);
                            XSSFCell cell_job = row.createCell(2);
                            XSSFCell cell_cmd = row.createCell(6);
                            cell_flow.setCellValue("F_gp_"+list.get(i).getSysName());
                            cell_job.setCellValue("J_gp_"+list.get(i).getTableName());
                            cell_cmd.setCellValue(cmdStr);
                        }
                    }else{
                        logger.info("待处理数据为空");
                    }   
                    out.flush();
                    wb.write(out);  
                    out.close(); 
                }    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                logger.info("makeExcle>获取exlce数据异常:"+e.toString());
            }
            logger.info("生成excle:end");
        }
  • 相关阅读:
    慎重使用MySQL auto_increment
    Java Tread多线程(0)一个简单的多线程实例
    Nubia Z5S 官方4.4 201内測版 内核版本号信息
    “cvSnakeImage”: 找不到标识符
    raid5什么意思?怎样做raid5?raid5 几块硬盘?
    Quartz CronTrigger运用
    php zip文件内容比較类
    UVA 1069
    Eclipse启动Tomcat时,45秒超时解决方案
    簡單SQL存儲過程實例
  • 原文地址:https://www.cnblogs.com/lizm166/p/10650542.html
Copyright © 2020-2023  润新知