/**
* 上海汽车集团财务有限责任公司
* Copyright (c) 1994-2014 All Rights
Reserved.
*/
package com.saicfc.pmpf.internal.manage.utils;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* Excel文件生成器
* @author lizhiyong
* @version $Id: ExcelUtils.java, v 0.1
2014年9月11日 下午5:27:18 Exp $
*/
public class ExcelUtils {
/**
* 生成一个Excel文件 jxl
* @param filePath 要生成的Excel文件的路径
* @param titleList 要生成的Excel文件的头信息
* @param dataList 要生成的Excel文件的详细信息
* @param fileName 要生成的Excel文件名
* @param sheetName 要生成的sheet文件名
* @return excelFile
*/
@SuppressWarnings("rawtypes")
public static File writeExcel(String filePath, List titleList, List dataList, String fileName,
String sheetName) {
WritableWorkbook wwb = null;
File excelFile = null;
try {
File file = new File(filePath);
if (!file.exists()) {
file.mkdir();
System.out.println("文件夹已创建");
}
// 新建立一个jxl文件
//定义文件名格式并创建
excelFile = File.createTempFile(fileName, ".xls", new File(filePath));
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(excelFile);
if (wwb != null) {
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet(sheetName, 0);
//添加头信息
int row = 0;
for (Iterator iterator = titleList.iterator(); iterator.hasNext();) {
LinkedHashMap titleMap = (LinkedHashMap) iterator.next();
int cell = 0;
for (Iterator titleIterator = titleMap.entrySet().iterator(); titleIterator
.hasNext();) {
java.util.Map.Entry titleEntry = (java.util.Map.Entry) titleIterator.next();
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
ws.addCell(new jxl.write.Label(cell, row, (String) titleEntry.getValue()));
cell++;
}
row++;
}
//下面开始添加单元格信息
int rows = titleList.size();
for (Iterator iterator = dataList.iterator(); iterator.hasNext();) {
LinkedHashMap dataMap = (LinkedHashMap) iterator.next();
int cells = 0;
for (Iterator dataIterator = dataMap.entrySet().iterator(); dataIterator
.hasNext();) {
java.util.Map.Entry dataEntry = (java.util.Map.Entry) dataIterator.next();
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
//将生成的单元格添加到工作表中
ws.addCell(new jxl.write.Label(cells, rows, (String) dataEntry.getValue()));
cells++;
}
rows++;
}
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
}
} catch (IOException e) {
e.printStackTrace();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
return excelFile;
}
}
下面是调用:
String fileName = "中信银行(CITIC)退款数据";
String sheetName = "中信银行(CITIC)退款数据";
List titleList = new ArrayList();
LinkedHashMap titleMap = new LinkedHashMap();
titleMap.put("fileType", "文件类型:");
titleMap.put("fileType1", "FTB2CBatchPayback");
titleList.add(0, titleMap);
LinkedHashMap titleMap2 = new LinkedHashMap();
titleMap2.put("fileTitle", "标题:");
titleMap2.put("fileTitle1", "退款批量");
titleList.add(1, titleMap2);
titleList.add(2, new LinkedHashMap());
titleList.add(3, new LinkedHashMap());
LinkedHashMap titleMap3 = new LinkedHashMap();
titleMap3.put("title1", "原支付订单号");
titleMap3.put("title2", "原支付订单日期");
titleMap3.put("title3", "退款金额");
titleMap3.put("title4", "摘要");
titleList.add(4, titleMap3);
//创建文件
File file = ExcelUtils.writeExcel(filePath, titleList, exportData, fileName, sheetName);
//下载文件
downLoadFile(response, filePath, file);
/**
* 下载文件
* @param response
* @param filePath 文件路径
* @param file 文件
* @throws IOException
*/
public void downLoadFile(HttpServletResponse response, String filePath, File file)
throws IOException {
String fileName = file.getName();
//下载文件
FileManageUtils.exportFile(response, filePath + fileName, fileName);
//删除单个文件
FileManageUtils.deleteFile(filePath, fileName);
}
package com.saicfc.pmpf.internal.manage.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
/**
* 文件管理
* @author lizhiyong
* @version $Id: FileManageUtils.java, v 0.1
2014年9月11日 上午9:37:47 Exp $
*/
public class FileManageUtils {
/**
* 下载文件
* @param response
* @param csvFilePath
* 文件路径
* @param fileName
* 文件名称
* @throws IOException
*/
public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)
throws IOException {
response.setContentType("application/csv;charset=GBK");
response.setHeader("Content-Disposition",
"attachment; filename=" + new String(fileName.getBytes("GBK"), "ISO8859-1"));
//URLEncoder.encode(fileName, "GBK")
InputStream in = null;
try {
in = new FileInputStream(csvFilePath);
int len = 0;
byte[] buffer = new byte[1024];
response.setCharacterEncoding("GBK");
OutputStream out = response.getOutputStream();
while ((len = in.read(buffer)) > 0) {
//out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
out.write(buffer, 0, len);
}
} catch (FileNotFoundException e) {
System.out.println(e);
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
/**
* 删除该目录filePath下的所有文件
* @param filePath
* 文件目录路径
*/
public static void deleteFiles(String filePath) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
files[i].delete();
}
}
}
}
/**
* 删除单个文件
* @param filePath
* 文件目录路径
* @param fileName
* 文件名称
*/
public static void deleteFile(String filePath, String fileName) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
if (files[i].getName().equals(fileName)) {
files[i].delete();
return;
}
}
}
}
}
}
分享到:
相关推荐
只要你构造好gridview即可调用公用类生成excel文件
Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类
1.将此模块下载后解压,解压后的文件放在源代码的文件夹内 2.在需要引用的单元文件USES这个文件名,即PubUnit 3.引用后就可以直接调用了 导出:procedure DataToExcel(MyAdoQuery:TADOQuery); 导入:procedure ...
公用的excel导入功能,内有文档说明,代码,步骤。是个值得你下载的好东西哦
NULL 博文链接:https://838179211.iteye.com/blog/1686294
压缩包内有三款不同的EXCEL文件修复工具,分别是:Excel Repair 1.4.0.1汉化绿色版是一个非常实用的EXCEL文件修复工具,通过它能够修复受损的EXCEL文件;可以恢复空的单元格、恢复数组公式、恢复公用公式,支持...
csv文件的读取与生成 Lm.Common.DAL 通用数据访问层基类及公用类 Lm.Common.DAL.Sql 通用数据访问层针对sql server 2005及以上版本的实现 Lm.Common.Excel Excel2003的读取与生成 Lm.Common.Excel.OpenXml Excel...
vue项目前端导出数据到Excel,引用的公用组件
java公用类,sql基础类等,为使用者提供便利,更好的开发程序
C#导出到WORD Excel的公用方法 生成dll文件 只要引用就可以用、和控件一样拖出来就可以用、
归纳了一些很实用的工具类,几乎JAVA开发中都会用到的相关数据类型的转换,时间类型的转换,等等
下面小编就为大家带来一篇java POI解析Excel 之数据转换公用方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本人工作中自己写的一个excel工具类,可以单独打包成jar,作为公共模块使用。 使用它可以直接不用关心poi的api。导入导出,轻轻松松。 使用方法请关注一下,cn.com.flaginfo.biz.excel.test 包下面的Test类。
java中字节的各级单位相互转换的公用方法的公用类
ABAP2XLSX+封装EXCEL 打印的公用类
拥有Microsoft Office 2010 的同事们会发现,Excel无法将几个窗口并排放置,几个Excel文件是共享一个窗口的。
jeeshop-myAutoCode- 代码生成器
common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 ...
在项目开发中我们会将很多环境特定的变量定义到一个配置文件中,比如properties文件,把数据库的用户名和密码存放到此属性...下面这篇文章就主要介绍了java中读写Properties属性文件公用方法,需要的朋友可以参考借鉴。
token 生成文件,用于前后端数据传输时发送的密钥(暗语)。 直接解压后引用该文件即可 -- 后端在收到第一次请求的时候调用 私有的(p开头的) -- 前端发来密钥的时候调用 公用的进行判断是否正确 你也可以自己...