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");
}
Java 实现追加excle文件内容的更多相关文章
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- java Api 读取HDFS文件内容
package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ...
- python 用类方法和静态方法实现是追加写文件内容,和读指定行号的内容
用类方法和静态方法实现:一个是追加写文件一行内容,一个是读指定行号的内容 #coding=utf-8 class handle_file(object): def __init__(s ...
- java代码---I/O文件内容复制
总结:主要是弄清输入流,输出流 输入流和输出流都是针对程序而言,把文件内容读取到程序是输入流 从程序把内容写入文件是输出流 package com.a.b; import java.io.*; imp ...
- Java&mysql:过滤文件内容,将新文件内容存入mysql数据库
在上一篇博文jdbc连接数据库中我已经简单介绍了如何连接到mysql数据库,今天要总结的是学长给我布置的一个小作业,把一个很大的已经用","分开了的一行一行的txt文件内容过滤掉注 ...
- java源码——对文件内容的查找和替换(开始写界面咯)
问题是:"键盘输入文件的路径.查找内容和替换内容,对指定路径的文件的内容进行查找和替换." 好久没写界面了,今天熟悉一下界面的书写和监听器操作. 这个问题的本身不是很难,重点应该是 ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
- java Io流更新文件内容
package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class FileOut ...
- Java 合并多个文件内容到一个文件(递归遍历某个文件夹下所有文件)
这段代码通过Java I/O流API实现将多个文件合并到一个文件中,输出为文本文件,提供一个支持语法高亮的网站,http://www.codeinword.com/ 适合粘贴代码到word文档,小巧实 ...
随机推荐
- [Manthan, Codefest 18][Codeforces 1037F. Maximum Reduction]
题目链接:1037F - Maximum Reduction 题目大意:给出一段代码,给你一个长度为n的数组和数字k,求程序运行结果,mod 1e9+7输出 简单翻译下代码的意思,初始定义一个空数组b ...
- swust oj 1069
图的按录入顺序广度优先搜索 5000(ms) 10000(kb) 2347 / 4868 Tags: 广度优先 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结 点,然后访问该结点的 ...
- nginx 禁止恶意域名解析
server { listen default_server; server_name _; ssl on; ssl_certificate /etc/nginx/cert/aaaa.pem; ssl ...
- Android开发入门经典【申明:来源于网络】
Android开发入门经典[申明:来源于网络] 地址:http://wenku.baidu.com/view/6e7634050740be1e650e9a7b.html?re=view
- linux命令 网络篇
linux常用命令 netstat 语法(命令) 主要查看端口状态 netstat 语法 netstat -t/tcp 显示Tcp传输协议连线状况; netstat -u/udp 显示UDP传输协 ...
- 这 10 款良心 Windows 软件,改变你对国产的认知
提起国产 Windows 软件,你可能首先想到的是捆绑安装.弹窗广告.卸载残留等关键词.尽管一些所谓「大厂」的确致力于拉低业界的下限,但依然有开发者坚守底线,为改变整个生态圈而默默努力.今天,少数派就 ...
- WebH
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- 图像分类(三)GoogLenet Inception_v3:Rethinking the Inception Architecture for Computer Vision
Inception V3网络(注意,不是module了,而是network,包含多种Inception modules)主要是在V2基础上进行的改进,特点如下: 将滤波器尺寸(Filter Size) ...
- Spring Boot 基于Spring Initializer 的快速构建 day02
一.基于Spring Initializr 快速构建Spring Boot项目(快速) 备注:需要联网 这是使用Intellij Idea快速构建可以为我们省去大量的pom.xml配置时间,简单操作, ...
- django 1.11 目录
django 信号 django form