excelmanager.java
来自「J2EE项目开发Excel数据导入导出操作组件源代码(附带说明文档)」· Java 代码 · 共 259 行
JAVA
259 行
package com.javayjm.excel;
/**
* 公 司:
* 文件名:ExcelManager.java
* 作 者:YJM
* 版本号:1.0
* 时 间:2007-11-14上午10:42:25
*/
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.javayjm.excel.config.ExcelConfigFactory;
import com.javayjm.excel.config.ExcelConfigManager;
import com.javayjm.excel.file.ExcelToModel;
import com.javayjm.excel.file.ModelToExcelMessage;
import com.javayjm.excel.file.impl.ExcelToModelImpl;
import com.javayjm.excel.file.impl.ModelToExcelMessageImpl;
import com.javayjm.test.model.DeptModel;
public class ExcelManager {
private File excelFile = null;
private String modelName = "";
private Map valueMap = null;
private ExcelToModel etm = null;
private ModelToExcelMessage mtem = null;
private ExcelConfigManager configManager = null;
public ExcelManager(String fileName, String modelName, Map valueMap) {
this(new File(fileName), modelName, valueMap);
}
public ExcelManager(String fileName, String modelName) {
this(new File(fileName), modelName, new HashMap());
}
public ExcelManager(File fileName, String modelName, Map valueMap) {
this.excelFile = fileName;
this.modelName = modelName;
this.valueMap = valueMap;
configManager = ExcelConfigFactory.createExcelConfigManger();
}
/**
* 取得从Excel转换到Model的 List.
*/
public List getModelList() {
// ExcelConfigManager configManager =
// ExcelConfigFactory.createExcelConfigManger();
// ExcelToModel etm = new
// ExcelToModelImpl(this.excelFile,configManager.getModel(modelName,
// ""),this.valueMap);
// List modelList = new ArrayList();
// if(etm==null){
// etm = new
// ExcelToModelImpl(this.excelFile,configManager.getModel(modelName,
// ""),this.valueMap);
// }
if (isValidateExcelFormat()) {
// modelList = etm.getModelList();
return etm.getModelList();
}
return null;
}
/**
* 验证Xml文件配制的Excel标题在 Excel文件中是否在
*/
public boolean isValidateExcelFormat() {
// ExcelConfigManager configManager =
// ExcelConfigFactory.createExcelConfigManger();
// ExcelToModel etm = new
// ExcelToModelImpl(this.excelFile,configManager.getModel(modelName,
// ""),this.valueMap);
if (etm == null) {
etm = new ExcelToModelImpl(this.excelFile, configManager.getModel(modelName, ""), this.valueMap);
}
return etm.validateExcelFormat();
}
/**
* 取得Xml文件中配制的对应Excel文件中的标题
*/
public Map getConfigTitle() {
if (etm == null) {
etm = new ExcelToModelImpl(this.excelFile, configManager.getModel(modelName, ""), this.valueMap);
}
return etm.getConfigTitle();
}
/**
* 取得从Excel转换到Model的并且验证通过的 List.
*/
public List getSucessModelList() {
if (isValidateExcelFormat()) {
return etm.getSuccessModelList();
}
return null;
}
/**
* 取得从Excel转换到Model的并且验证未通过的 List.
*/
public List getErrorModelList() {
if (isValidateExcelFormat()) {
return etm.getErrorModelList();
}
return null;
}
/**
*
*/
private File getFile(File excelFile, List modelList, String strFlag) {
if (mtem == null) {
if (excelFile == null)
mtem = new ModelToExcelMessageImpl(this.excelFile, configManager.getModel(modelName, ""), modelList);
else
mtem = new ModelToExcelMessageImpl(excelFile, configManager.getModel(modelName, ""), modelList);
}
mtem.setStartTitleRow(etm.getStartTitleRow());
mtem.setIntSheet(etm.getIntSheet());
if ("-1".equals(strFlag)) {
return mtem.getFile();
} else if ("0".equals(strFlag)) {
return mtem.getSuccessFile();
} else {
return mtem.getErrorFile();
}
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的记录
* @param excelFile File
* @param modelList List
* @return File
*/
public File getExcelFile(File excelFile, List modelList) {
return this.getFile(excelFile, modelList, "-1");
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的验证通过的记录
* @param excelFile File
* @param modelList List
* @return File
*/
public File getSucessExcelFile(File excelFile, List modelList) {
return this.getFile(excelFile, modelList, "0");
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的验证未通过的记录
* @param excelFile File
* @param modelList List
* @return File
*/
public File getErrorExcelFile(File excelFile, List modelList) {
return this.getFile(excelFile, modelList, "1");
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的记录
* @param modelList List
* @return File
*/
public File getExcelFile(List modelList) {
return this.getFile(null, modelList, "-1");
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的验证通过的记录
* @param modelList List
* @return File
*/
public File getSucessExcelFile(List modelList) {
return this.getFile(null, modelList, "0");
}
/**
* 把转换之后的modelList中验证未通过的消息,回写到Excel文件中,并返回全部导入时文件的验证未通过的记录
* @param modelList List
* @return File
*/
public File getErrorExcelFile(List modelList) {
return this.getFile(null, modelList, "1");
}
/**
* 配制文件加强,一是可以传一个固定值到所有Bena中. 配制一个固定值.把固定值在RuturnConfig 单设成一个Map
* ,配制文件中,对固定值的配制必须有默认值, ExcelToModelImpl
* 实现时,根据Excel列,属性设置完成后,对Map循环,设置其值.首先从传参Map中取值,没有取默认值设置.
* 二是可以配制转换对应的码表值.如:excel中传的值为"长期" 可以配制成 "bgqx长期"做为键值 "C" 做为 Bean 设置的值.
*/
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("deptNo", "1");
map.put("bgqx永久", "Y");
map.put("bgqx长期", "C");
map.put("bgqx短期", "D");
ExcelManager test = new ExcelManager("D:\\work\\workspace\\excelfile\\test.xls", "deptModel", map);
//ExcelManager test = new ExcelManager("D:\\work\\workspace\\excelfile\\ym.xls", "importExcelForm", map);
//设置对应取第几个sheet内的值。
test.getEtm().setSheet(0);
//设置取目标sheet的名称
//test.getEtm().setSheet("Sheet2");
// 按列读取
// test.getEtm().setUseColumn(true);
List modelList = test.getModelList();
// System.out.println("--" + ToStringBuilder.reflectionToString(test.getConfigTitle().entrySet().toArray()));
// // System.out.println("size = " + modelList.size());
for (int i = 0; i < modelList.size(); i++) {
Object obj = modelList.get(i);
System.out.println("--" + obj.getClass().getSimpleName());
System.out.println("--" + ToStringBuilder.reflectionToString(obj));
}
// 如果Class配制成HashMap,下面可以测试。
for (int i = 0; i < modelList.size(); i++) {
Object oo = modelList.get(i);
if (oo instanceof Map) {
Map obj = (Map) oo;
System.out.println("--" + obj.getClass().getSimpleName());
System.out.println("--" + ToStringBuilder.reflectionToString(obj.keySet().toArray()));
System.out.println("--" + ToStringBuilder.reflectionToString(obj.entrySet().toArray()));
}
}
System.out.println("---------======================--------------------");
// ExcelManager test2 = new
// ExcelManager("E:\\workspace\\test.xls","deptModel",map);
// List modelList2 = test2.getModelList();
// 测试错误数据回写
// List list = new ArrayList();
// DeptModel dept = new DeptModel();
// dept.setFlag("0");
// dept.setMessage("00000");
// DeptModel dept1 = new DeptModel();
// dept1.setFlag("1");
// dept1.setMessage("111111");
// list.add(dept);
// list.add(dept1);
//
test.getExcelFile(modelList);
}
/**
* 取得操纵Excel文件的实例
*/
public ExcelToModel getEtm() {
if (etm == null) {
etm = new ExcelToModelImpl(this.excelFile, configManager.getModel(modelName, ""), this.valueMap);
}
return etm;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?