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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM