/**
* 上海汽车集团财务有限责任公司
* 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;
}
}
}
}
}
}
分享到:
相关推荐
标题中的“生成excel报表(poi)公用方法AExcuteExcel”指的是使用Apache POI库来创建Excel报表的一个通用方法,名为“AExcuteExcel”。Apache POI是Java领域中广泛使用的库,它允许开发者读写Microsoft Office格式...
总结起来,Java导入导出通用模板是利用自定义注解提供元数据,通过反射实现动态操作,结合Java POI库处理Excel文件,以实现数据的灵活导入和导出。这种模板化的设计模式在Java开发中具有广泛的应用价值,尤其是在...
NPOI是一个强大的开源库...通过使用NPOI导出控件,开发者能够高效、灵活地生成Excel文件,满足报表生成、数据导出等各种业务需求。在实际项目中,结合上述知识点,我们可以构建出高效、稳定且易于维护的Excel处理模块。
4. **Excel导出**:Apache POI库是用于读写Microsoft Office格式文件的Java库,包括Excel。我们可以利用它创建、修改和读取Excel工作簿、工作表和单元格,支持数据格式化和样式设置。 5. **加密**:Java提供了强大...
实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中...
实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 ...
Hutool的诞生减少了开发人员在项目中重复编写公用工具类和方法的时间,降低了学习新API的成本,同时也降低了潜在的bug风险。 Hutool的核心特性在于其丰富的工具方法,覆盖了文件操作、流处理、加密解密、字符编码...
实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容...
实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 ...
实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 ...
code:代码生成工具 common:系统公用代码 core:核心工具 database:数据库工具,java导入导出sql,mybatis分页插件等 email:邮箱工具 encrypt:加密签名工具 http:网络请求工具 image:图片处理工具 list:集合工具 oauth:...
- 使用策划定义的Excel表,一键生成Java、C#和Proto文件,确保服务器和客户端的数据结构一致。 - 通过Excel表中的标注,区分公共数据、客户端专用和服务器专用参数。 3. **客户端逻辑处理**: - 客户端应尽量...
4. 数据库文件扩展名:创建数据库后,系统会自动生成扩展名为.DBC(数据库文件)、.DCT(表定义文件)和.DCX(索引文件)的三个文件。 5. C语言标识符规则:C语言规定,标识符中的字母区分大小写,这在编程时需要...
4. 工资管理系统:处理员工工资计算、发放和报表生成,需要掌握数据库操作和计算逻辑,可能用到Excel数据导入导出、报表生成工具等。 5. 档案管理系统:实现对电子档案的分类、存储、检索和权限控制,可使用.NET或...
TXT、XML190设置附加选项(步骤4)-TXT、XML、Excel、HTML191设置目标表(步骤5)191调整栏位结构及对应栏位(步骤6)192选择导入模式(步骤7)192保存及确认导入(步骤8)194导出向导194设置导出文件格式(步骤1)...
系统能够自动生成应收、实收、未收明细表,以及月度、季度、年度的收费率报表,并支持 Excel 导出,使得管理者能够更方便地进行财务分析和预算编制。 票款管理功能为付款业务处理提供了系统化的解决方案。管理者...
3. E-R 图转换为关系模式时,若一个E-R图含有两个实体A、B,它们之间联系类型是M:N(多对多),转换后会生成3个关系模式,包括A实体、B实体和它们之间的关联关系。 4. 进位计数系统的核心概念是基数和位权,这两个...
它的核心功能包括报表设计器和运行时组件,支持图形化的报表制作,可以方便地生成表格、图片,以及Excel和HTML格式的导出,其样式设置相对简单。 **2. Birt开发入门** Birt的基本概念包括: - **数据源**:报表...