java 生成本地xsl excecl 文件,并上传ftp


import com.bit.bpc.extend.report.client.api.MsaApiFeignClient;
import com.bit.bpc.extend.report.client.api.model.GroupUserVO;
import com.bit.bpc.extend.report.emos.model.fault.EmosFaultProcessInfo;
import com.bit.bpc.extend.report.emos.repository.fault.EmosFaultProcessInfoMapper;
import com.bit.bpc.extend.report.emos.service.fault.dwftp.FTPTools;
import com.bit.bpc.extend.report.emos.service.fault.dwftp.FaultOrderNum;
import com.bit.bpc.extend.report.utils.DateUtils;
import com.bit.bpc.extend.report.utils.FeignResultUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.*;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Properties;

/**
* @author ljk
* @version 1.0
* @date 2020/11/11 19:27
*/
@Component
public class testFtp {

@Autowired
MsaApiFeignClient msaApiFeignClient ;
@Autowired
private EmosFaultProcessInfoMapper processInfoMapper;

/////////////////////////////////////////////////////////////////////////////////////
private static final Logger log = LoggerFactory.getLogger(FaultOrderNum.class);

//@Scheduled(cron="*/15 * * * * ?") //每15秒 执行一次
public boolean sendExcelsFtp() throws IOException {
//String fileName="/opt/bit/bpc/servers/bit-bpc-extend-report/01002_"+ DateUtils.getCurrentDateDate()+".xsl";
String fileName="d:\\01001_"+ DateUtils.getCurrentDateDate()+".xsl";

Properties pro = System.getProperties();
System.out.println("当前编码格式:"+pro.getProperty("file.encoding"));

//列头
String[] headers = {"人员手机号","人员唯一标识","姓名","地市","区县","时间","专业","处理故障数"};

HSSFWorkbook wb = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(headers[i]);
}
//List<GroupUserVO> groupUsers = FeignResultUtils.msaResult(msaApiFeignClient.getGroupUsersByGroupId(group.getGroup_id()));
List<EmosFaultProcessInfo> listmaps = processInfoMapper.getdaiweiOrder();
log.info("listmaps.size : "+listmaps.size());

EmosFaultProcessInfo processInfo=null;
//写入数据
for (int j=0;j<listmaps.size(); j++){
row = sheet.createRow(j+1);
processInfo = listmaps.get(j);
List<GroupUserVO> groupUsers = FeignResultUtils.msaResult(msaApiFeignClient.getGroupUsersByGroupId(processInfo.getDaiweiGroupId()));
GroupUserVO groupUserVO = groupUsers.get(1);

row.createCell(0).setCellValue(groupUserVO.getMobile());
row.createCell(1).setCellValue(groupUserVO.getUserAccount());
row.createCell(2).setCellValue(groupUserVO.getUserName());
row.createCell(3).setCellValue(processInfo.getRegion());
row.createCell(4).setCellValue(processInfo.getCountry());
row.createCell(5).setCellValue(processInfo.getProcessCreateTime());
row.createCell(6).setCellValue(processInfo.getNetClassOne());
row.createCell(7).setCellValue(processInfo.getId()); //总数


/*row.createCell(0).setCellValue("groupUserVO.getUserAccount()");
row.createCell(1).setCellValue("groupUserVO.getUserName()");
row.createCell(2).setCellValue("processInfo.getRegion()");
row.createCell(3).setCellValue("processInfo.getCountry()");
row.createCell(4).setCellValue("processInfo.getProcessCreateTime()");
row.createCell(5).setCellValue("总数");
row.createCell(6).setCellValue("中文"); //总数*/
}

for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
File file = new File(fileName);
try {
if(file.exists()){
// 文件存在
log.info("文件已存在>>>>>>>>:"+fileName);
return false;
}

/*OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
wb.write(oStreamWriter);
Writer append = oStreamWriter.append();
oStreamWriter.close();*/

//输出Excel文件1
FileOutputStream output=new FileOutputStream(fileName);
wb.write(output);//写入磁盘
output.close();

}catch (Exception e){
System.out.println(e.getMessage());
}finally {
wb.close();
}

CSVUtil csvUtil = new CSVUtil();
csvUtil.uploadFile();

//file.delete();
return true;
}
}






import com.bit.bpc.extend.report.utils.DateUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.beans.BeanUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;

/**
* @author ljk
* @version 1.0
* @date 2020/11/11 17:56
*/
public class CSVUtil {
//ftp服务器地址
public String hostname = "";
//ftp服务器端口号默认为21
public Integer port = 21 ;
//ftp登录账号
public String username = "inspurftp";
//ftp登录密码
public String password = "inspurftp#238";

public FTPClient ftpClient = null;

/**
* 初始化ftp服务器
*/
public void initFtpClient() {
ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
try {
System.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port);
ftpClient.connect(hostname, port); //连接ftp服务器
ftpClient.login(username, password); //登录ftp服务器
int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器
if(!FTPReply.isPositiveCompletion(replyCode)){
System.out.println("connect failed...ftp服务器:"+this.hostname+":"+this.port);
}
System.out.println("connect successfu...ftp服务器:"+this.hostname+":"+this.port);
}catch (Exception e) {
e.printStackTrace();
}
}

/**
* 上传文件
//* @param pathname ftp服务保存地址
//* @param fileName 上传到ftp的文件名
//* @param originfilename 待上传文件的名称(绝对地址) *
* @return
*/
//public boolean uploadFile( String pathname, String fileName,String originfilename){
public boolean uploadFile(){

String pathname="/eoms_data";
String fileName="01001_"+ DateUtils.getCurrentDateDate()+".csv";
//String originfilename="\\opt\\bit\\bpc\\servers\\bit-bpc-extend-report";
String originfilename="/opt/bit/bpc/servers/bit-bpc-extend-report/";

boolean flag = false;
InputStream inputStream = null;
try{
System.out.println("开始上传文件");
inputStream = new FileInputStream(new File(originfilename+fileName));
initFtpClient();
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
CreateDirecroty(pathname);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag = true;
System.out.println("上传文件成功");
}catch (Exception e) {
System.out.println("上传文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
if(null != inputStream){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
/**
* 上传文件
* @param pathname ftp服务保存地址
* @param fileName 上传到ftp的文件名
* @param inputStream 输入文件流
* @return
*/
public boolean uploadFile( String pathname, String fileName,InputStream inputStream){
boolean flag = false;
try{
System.out.println("开始上传文件");
initFtpClient();
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
CreateDirecroty(pathname);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag = true;
System.out.println("上传文件成功");
}catch (Exception e) {
System.out.println("上传文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
if(null != inputStream){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
//改变目录路径
public boolean changeWorkingDirectory(String directory) {
boolean flag = true;
try {
flag = ftpClient.changeWorkingDirectory(directory);
if (flag) {
System.out.println("进入文件夹" + directory + " 成功!");

} else {
System.out.println("进入文件夹" + directory + " 失败!开始创建文件夹");
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
return flag;
}

//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
public boolean CreateDirecroty(String remote) throws IOException {
boolean success = true;
String directory = remote + "/";
// 如果远程目录不存在,则递归创建远程服务器目录
if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) {
int start = 0;
int end = 0;
if (directory.startsWith("/")) {
start = 1;
} else {
start = 0;
}
end = directory.indexOf("/", start);
String path = "";
String paths = "";
while (true) {
String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");
path = path + "/" + subDirectory;
if (!existFile(path)) {
if (makeDirectory(subDirectory)) {
changeWorkingDirectory(subDirectory);
} else {
System.out.println("创建目录[" + subDirectory + "]失败");
changeWorkingDirectory(subDirectory);
}
} else {
changeWorkingDirectory(subDirectory);
}

paths = paths + "/" + subDirectory;
start = end + 1;
end = directory.indexOf("/", start);
// 检查所有目录是否创建完毕
if (end <= start) {
break;
}
}
}
return success;
}

//判断ftp服务器文件是否存在
public boolean existFile(String path) throws IOException {
boolean flag = false;
FTPFile[] ftpFileArr = ftpClient.listFiles(path);
if (ftpFileArr.length > 0) {
flag = true;
}
return flag;
}
//创建目录
public boolean makeDirectory(String dir) {
boolean flag = true;
try {
flag = ftpClient.makeDirectory(dir);
if (flag) {
System.out.println("创建文件夹" + dir + " 成功!");

} else {
System.out.println("创建文件夹" + dir + " 失败!");
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}

/** * 下载文件 *
* @param pathname FTP服务器文件目录 *
* @param filename 文件名称 *
* @param localpath 下载后的文件路径 *
* @return */
public boolean downloadFile(String pathname, String filename, String localpath){
boolean flag = false;
OutputStream os=null;
try {
System.out.println("开始下载文件");
initFtpClient();
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile file : ftpFiles){
if(filename.equalsIgnoreCase(file.getName())){
File localFile = new File(localpath + "/" + file.getName());
os = new FileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag = true;
System.out.println("下载文件成功");
} catch (Exception e) {
System.out.println("下载文件失败");
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
if(null != os){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}

/** * 删除文件 *
* @param pathname FTP服务器保存目录 *
* @param filename 要删除的文件名称 *
* @return */
public boolean deleteFile(String pathname, String filename){
boolean flag = false;
try {
System.out.println("开始删除文件");
initFtpClient();
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag = true;
System.out.println("删除文件成功");
} catch (Exception e) {
System.out.println("删除文件失败");
e.printStackTrace();
} finally {
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
}
return flag;
}

public static void main(String[] args) {
CSVUtil ftp =new CSVUtil();
//ftp.uploadFile("ftpFile/data", "123.docx", "E://123.docx");
//ftp.downloadFile("ftpFile/data", "123.docx", "F://");
ftp.deleteFile("ftpFile/data", "123.docx");
System.out.println("ok");
}

}
上一篇:java ftp上传下载文件


下一篇:FTPClient上传文件大小为0问题