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"); 
    }

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16621.html

(0)
上一篇 2021年7月19日 19:29
下一篇 2021年7月19日 19:29

相关推荐

发表回复

登录后才能评论