- 浏览: 241119 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
haoxuexi87:
【学途无忧网】Hive详解及实战课程学习地址:http://w ...
HIve实战分析Hadoop的日志 -
genan:
示例简单易懂,感谢LZ分享
设计模式之观察者模式学习笔记 -
ln_software:
Java中RandomStringUtils工具类 -
Scorpio921:
wang吖 写道该问题已经解决,由于多线程并发,链接SFTP的 ...
com.jcraft.jsch.JSchException: channel is not opened.求解决方案 -
siophy:
楼主没有续作吗?没感觉到分析功能的存在,只看到了数据的迁移
HIve实战分析Hadoop的日志
/**
* @file ExcelUtils.java
*
* @brief ExcelUtils.java相关函数
*
*
* @author
* - Dec 28, 2011 xxxx *
* @par 版权信息:
* Copyright(C) 2011-2011 鑫万佳
*/
package com.xwj.reflact;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.log4j.Logger;
import com.xwj.bean.code.HeXinTradeCode;
import com.xwj.bean.code.TradeCode;
import com.xwj.bean.code.TradeCodeRelationShip;
/**
* 相关函数 处理Excel的工具类
*
* @author Dec 28, 2011 xxxx 创建初始版本
*
* @version V0.1
*
*/
public class ExcelUtils {
private static Logger log = Logger.getLogger(ExcelUtils.class);
/**
*
* @方法功能描述:导出Excel表格的工具类
*
* @param res
* HttpServletResponse 相应对象
* @param filename
* 导出的Excel文件名称
* @param sheetName
* Excel sheet 表单名称
* @param tableHeadName
* Excel sheet 表头名称
* @param titlesList
* 导出的Excel表格的表头名称
* @param contentList
* 要写入表格的数据集合
* @author: xxxx
* @CreateDate: Dec 28, 2011
*/
public static void exportExcel_2(HttpServletResponse res, String filename,
String sheetName, String tableHeadName, List titlesList,
List contentList) {
try {
res.reset();
res.setContentType("application/vnd.ms-excel");
res.addHeader("Content-disposition", "attachment; filename=\""
+ new String(filename.getBytes(), "ISO8859-1") + "\""
+ ".xls");
// 获取工作表
WritableWorkbook book = Workbook.createWorkbook(res
.getOutputStream());
WritableSheet sheet = book.createSheet("sheet_1", 0);
// 添加表头
Label labelHead = new Label(0, 0, tableHeadName);
sheet.addCell(labelHead);
// 生成Excel表头数据
for (int i = 0; i < titlesList.size(); i++) {
// Label(col, row, content)
Label label = new Label(i, 1, titlesList.get(i).toString());
sheet.addCell(label);
}
// 生成表格数据
int index = 2;// 行数
// int row = 1;
int col = 0;
int totalCol = titlesList.size();// 获取总列数
for (int i = 0; i < contentList.size(); i++, col++) {
if (col == totalCol) {
index++;
col = 0;
}
Label label = new Label(col, index, contentList.get(i)
.toString());
sheet.addCell(label);
}
book.write();// 写出Excel表格
book.close();
res.getOutputStream().flush();
res.getOutputStream().close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
/**
*
*@方法功能描述:根据查询的list返回Excel表格的方法
*
*@param res
* HttpServletResponse 相应对象
*@param filename
* 导出的 Excel 文件名称
*@param sheetName
* Excel sheet 表单名称
*@param tableHeadName
* Excel sheet 表头名称
*@param titlesList
* 导出的 Excel 表格的表头名称
*@param objFieldList
* 要显示 list 里面所装的对象的字段列表集合
*@param contentList
* 要写入表格的数据集合
*@author: xxxx
*@CreateDate: Dec 28, 2011
*/
public static void exportExcel(HttpServletResponse response, String filename,
String sheetName, String tableHeadName, List<Object> titlesList,
List<String>objFieldList, List<?> contentList) {
try {
response.reset();
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-disposition", "attachment; filename=\""
+ new String(filename.getBytes(), "ISO8859-1") + "\"" + ".xls");
// 获取工作表
WritableWorkbook book = Workbook.createWorkbook(response.getOutputStream());
WritableSheet sheet = book.createSheet(sheetName, 0);
// 添加表头
Label labelHead = new Label(0, 0, tableHeadName);
sheet.addCell(labelHead);
sheet.mergeCells(0, 0, titlesList.size()-1, 0);//合并表头信息
WritableCellFormat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
WritableFont wfont = new WritableFont( WritableFont.createFont("隶书"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
wc.setFont(wfont);
labelHead.setCellFormat(wc);
// 生成Excel表头数据
for (int i = 0; i < titlesList.size(); i++) {
// Label(col, row, content)
Label label = new Label(i, 1, titlesList.get(i).toString());
sheet.addCell(label);
}
Object obj = null;
Class objClazz = null;
if (contentList != null && contentList.size() != 0) {
obj = contentList.get(0);//获取list里面放置的对象
}
if (obj != null) {
objClazz = obj.getClass();
}
Field[] filds = objClazz.getDeclaredFields();//获取对象的所有字段
int index = 2;// 行数
int col = 0;//列数
int totalCol = titlesList.size();// 获取总列数
// 生成表格数据
for (int i = 0,len = contentList.size(); i < len; i++) {
Object objArg = contentList.get(i);//获取list里面放置的对象
Object content = null;//objArg 字段值
boolean fg = false;
for (Field fd : filds) {//循环取出每个字段
String fildName = fd.getName();
for (String objAttribute : objFieldList) {
if (fildName != null && objAttribute != null && objAttribute.equals(fildName)) {
boolean flag = fd.isAccessible();
fd.setAccessible(true);
content = fd.get(objArg);//获取字段的相关属性值
fd.setAccessible(flag);
fg = true;
break;
}
}
if (fg) {//当为TRUE的时候才可以把值写入Excel表格
if (col == totalCol) {//当前的列数等于表格的总列数时 即一条数据就结束
index++;//行数转为下一行
col = 0;//列数又从0开始
}
fg = false;
Label label = new Label(col++, index, content.toString());
sheet.addCell(label);
}
}
}
book.write();// 写出Excel表格
book.close();
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (UnsupportedEncodingException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (IOException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (RowsExceededException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (WriteException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (IllegalAccessException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
}
}
/**
*
* @方法功能描述:实现Excel表格的解析
*
* @param copyUrlFile
* Excel 表格所在的路径
* @param sheetName
* Excel 表格中的sheet名子
* @param clazz
* 表单所对应的对象
* @param fildsNameList
* 表格的每一列所对应的Java对象的属性名称,每一个属性名称必须和对象的属性名一样
* @param isHaveTitle
* 表格是否有一个合并的Title
* </li>true 表示有</li>
* </li>false 表示没有</li>
*
* @param isHaveHead 表格是否有一个每一列的列头 这个应该是有的
* </li>true 表示有</li>
* </li>false 表示没有</li>
* @return
* @author: xxxx
* @CreateDate: Dec 29, 2011
*/
public static List parseExcel(String copyUrlFile, String sheetName, Class clazz, List<String>fildsNameList, boolean isHaveTitle, boolean isHaveHead) {
Workbook rwb = null;
Map<String, String> map = null;
List<String> valueList = null;//用来保存Excel表格的每一行中每一个单元格的内容
List listObj = new ArrayList();//保存每一行的行对象
try {
rwb = Workbook.getWorkbook(new File(copyUrlFile));
Sheet sheet = rwb.getSheet(sheetName);//根据sheetName表单的名字获取表单
int rows = sheet.getRows();//总行数
int columns = sheet.getColumns();//总列数
Field[] fields = clazz.getDeclaredFields();
for (int r = 0; r < rows; r++) {//行循环
if (isHaveTitle && isHaveHead) {
if (r == 1 || r == 0) {//排除合并的表头 和 每一列的列头
continue;
}
}
if (!isHaveTitle) {//如果没有合并的表头 排除每一列的列头
if (r == 0) {
continue;
}
}
map = new HashMap<String, String>();
valueList = new ArrayList<String>();
for (int c = 0; c < columns; c++) {//列循环
Cell cell = sheet.getCell(c,r);
String contents = cell.getContents();
// TODO 对输入的数据进行判断验证是否合法
// for (String fdName : fildsNameList) {
// System.out.println("fdName <===================> " + fdName);
// for (Field fd : fields) {
// if (fd.getName().equals(fdName)) {
// map.put(fdName, contents);
// break;
// }
// }
// }
valueList.add(contents);//把一行的每一列的值添加到valueList里面
if (c == (columns - 1)) {//当一行解析结束的时候就可以获取一个对象
for (int i = 0; i < fildsNameList.size(); i++) {
//key 和 value 应该是一一对应的
map.put(fildsNameList.get(i), valueList.get(i));
}
Object bean = clazz.newInstance();
Object objBean = copyMapToBean(map, bean);
listObj.add(objBean);
}
}
}
return listObj;
} catch (BiffException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (IOException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (InstantiationException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (IllegalAccessException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
}
return null;
}
/**
*
* @方法功能描述:
* <li>将前台客户输入的form表单的内容封装到map里面</li>
* <li>注意map里面的 key 必须和bean里面的属性值一一对应</li>
* <li>也就是前台 from 的input标签的name要和bean对应</li>
*
* @param map
* 对应前的from表单输入的数据
* @param bean
* 要存库的数据库对象
* @param dateFormat
* <li>如果bean对象里面有java.utils.Date 类型需要将map里面的String转为date类型</li>
* <li>dateFormat 为指定的格式 默认为 'yyyyMMdd' </li>
* @return Object
* @author: xxxx
* @CreateDate: Dec 22, 2011
*/
public static Object copyMapToBean(Map<String, String> map, Object bean) {
Class clazz = bean.getClass();// 获取bean对象的class属性
Field[] fields = clazz.getDeclaredFields();
Object argsObj = null;// set方法执行的参数
for (Field fd : fields) {
try {
String fdType = fd.getType().toString();// 获取bean对象的字段属性
String key = fd.getName();// 获取字段名称作为map的键
String value = map.get(key);// 获取map中的值
if (value == null) {// 当value为null的时候说明该字段为非必填字段 循环继续执行
continue;// 慎重应用该关键字
}
// 此处要对fd的数据类型进行判断
if (fdType != null && fdType.equals("int")) {// int
argsObj = new Integer(value).intValue();
}
if (fdType != null && fdType.equals("class java.lang.Integer")) {// Integer
argsObj = new Integer(value);
}
if (fdType != null && fdType.equals("double")) {// double
argsObj = new Double(value).doubleValue();
}
if (fdType != null && fdType.equals("class java.lang.Double")) {// Double
argsObj = new Double(value);
}
if (fdType != null && fdType.equals("float")) {// float
argsObj = new Float(value).floatValue();
}
if (fdType != null && fdType.equals("class java.lang.Float")) {// Double
argsObj = new Float(value);
}
if (fdType != null && fdType.equals("long")) {// long
argsObj = new Long(value).longValue();
}
if (fdType != null && fdType.equals("class java.lang.Long")) {// Long
argsObj = new Long(value);
}
if (fdType != null && fdType.equals("short")) {// short
argsObj = new Short(value).shortValue();
}
if (fdType != null && fdType.equals("class java.lang.Short")) {// Short
argsObj = new Short(value);
}
// TODO 字符型
// TODO byte型
if (fdType != null && fdType.equals("class java.math.BigDecimal")) {// BigDecimal
argsObj = new BigDecimal(value);
}
/*
if (fdType != null && fdType.equals("class java.util.Date")) {// Date
if (dateFormat == null) {
dateFormat = "yyyyMMdd";
}
System.out.println("value-----eye---->" + value);
//argsObj = DateUtils.stringToDate(dateFormat, value);//转化日期对象
}*/
if (fdType != null && fdType.equals("class java.lang.String")) {// String 类型
argsObj = value;
}
boolean flag = fd.isAccessible();
fd.setAccessible(true);
// 执行bean对象的set方法
fd.set(bean, argsObj);
fd.setAccessible(flag);
} catch (IllegalArgumentException e) {
e.printStackTrace();
System.out.println("BeanCopyUtils----->copyMapToBean 方法执行异常");
} catch (IllegalAccessException e) {
e.printStackTrace();
System.out.println("BeanCopyUtils----->copyMapToBean 方法执行异常");
}
}
return bean;
}
//测试方法
public static void main(String[] args) {
String sheetName = "Sheet1";
String copyUrlFile_1 = "./src/test.xls";
//调用解析的方法实现解析
}
}
* @file ExcelUtils.java
*
* @brief ExcelUtils.java相关函数
*
*
* @author
* - Dec 28, 2011 xxxx *
* @par 版权信息:
* Copyright(C) 2011-2011 鑫万佳
*/
package com.xwj.reflact;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.log4j.Logger;
import com.xwj.bean.code.HeXinTradeCode;
import com.xwj.bean.code.TradeCode;
import com.xwj.bean.code.TradeCodeRelationShip;
/**
* 相关函数 处理Excel的工具类
*
* @author Dec 28, 2011 xxxx 创建初始版本
*
* @version V0.1
*
*/
public class ExcelUtils {
private static Logger log = Logger.getLogger(ExcelUtils.class);
/**
*
* @方法功能描述:导出Excel表格的工具类
*
* @param res
* HttpServletResponse 相应对象
* @param filename
* 导出的Excel文件名称
* @param sheetName
* Excel sheet 表单名称
* @param tableHeadName
* Excel sheet 表头名称
* @param titlesList
* 导出的Excel表格的表头名称
* @param contentList
* 要写入表格的数据集合
* @author: xxxx
* @CreateDate: Dec 28, 2011
*/
public static void exportExcel_2(HttpServletResponse res, String filename,
String sheetName, String tableHeadName, List titlesList,
List contentList) {
try {
res.reset();
res.setContentType("application/vnd.ms-excel");
res.addHeader("Content-disposition", "attachment; filename=\""
+ new String(filename.getBytes(), "ISO8859-1") + "\""
+ ".xls");
// 获取工作表
WritableWorkbook book = Workbook.createWorkbook(res
.getOutputStream());
WritableSheet sheet = book.createSheet("sheet_1", 0);
// 添加表头
Label labelHead = new Label(0, 0, tableHeadName);
sheet.addCell(labelHead);
// 生成Excel表头数据
for (int i = 0; i < titlesList.size(); i++) {
// Label(col, row, content)
Label label = new Label(i, 1, titlesList.get(i).toString());
sheet.addCell(label);
}
// 生成表格数据
int index = 2;// 行数
// int row = 1;
int col = 0;
int totalCol = titlesList.size();// 获取总列数
for (int i = 0; i < contentList.size(); i++, col++) {
if (col == totalCol) {
index++;
col = 0;
}
Label label = new Label(col, index, contentList.get(i)
.toString());
sheet.addCell(label);
}
book.write();// 写出Excel表格
book.close();
res.getOutputStream().flush();
res.getOutputStream().close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
/**
*
*@方法功能描述:根据查询的list返回Excel表格的方法
*
*@param res
* HttpServletResponse 相应对象
*@param filename
* 导出的 Excel 文件名称
*@param sheetName
* Excel sheet 表单名称
*@param tableHeadName
* Excel sheet 表头名称
*@param titlesList
* 导出的 Excel 表格的表头名称
*@param objFieldList
* 要显示 list 里面所装的对象的字段列表集合
*@param contentList
* 要写入表格的数据集合
*@author: xxxx
*@CreateDate: Dec 28, 2011
*/
public static void exportExcel(HttpServletResponse response, String filename,
String sheetName, String tableHeadName, List<Object> titlesList,
List<String>objFieldList, List<?> contentList) {
try {
response.reset();
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-disposition", "attachment; filename=\""
+ new String(filename.getBytes(), "ISO8859-1") + "\"" + ".xls");
// 获取工作表
WritableWorkbook book = Workbook.createWorkbook(response.getOutputStream());
WritableSheet sheet = book.createSheet(sheetName, 0);
// 添加表头
Label labelHead = new Label(0, 0, tableHeadName);
sheet.addCell(labelHead);
sheet.mergeCells(0, 0, titlesList.size()-1, 0);//合并表头信息
WritableCellFormat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
WritableFont wfont = new WritableFont( WritableFont.createFont("隶书"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
wc.setFont(wfont);
labelHead.setCellFormat(wc);
// 生成Excel表头数据
for (int i = 0; i < titlesList.size(); i++) {
// Label(col, row, content)
Label label = new Label(i, 1, titlesList.get(i).toString());
sheet.addCell(label);
}
Object obj = null;
Class objClazz = null;
if (contentList != null && contentList.size() != 0) {
obj = contentList.get(0);//获取list里面放置的对象
}
if (obj != null) {
objClazz = obj.getClass();
}
Field[] filds = objClazz.getDeclaredFields();//获取对象的所有字段
int index = 2;// 行数
int col = 0;//列数
int totalCol = titlesList.size();// 获取总列数
// 生成表格数据
for (int i = 0,len = contentList.size(); i < len; i++) {
Object objArg = contentList.get(i);//获取list里面放置的对象
Object content = null;//objArg 字段值
boolean fg = false;
for (Field fd : filds) {//循环取出每个字段
String fildName = fd.getName();
for (String objAttribute : objFieldList) {
if (fildName != null && objAttribute != null && objAttribute.equals(fildName)) {
boolean flag = fd.isAccessible();
fd.setAccessible(true);
content = fd.get(objArg);//获取字段的相关属性值
fd.setAccessible(flag);
fg = true;
break;
}
}
if (fg) {//当为TRUE的时候才可以把值写入Excel表格
if (col == totalCol) {//当前的列数等于表格的总列数时 即一条数据就结束
index++;//行数转为下一行
col = 0;//列数又从0开始
}
fg = false;
Label label = new Label(col++, index, content.toString());
sheet.addCell(label);
}
}
}
book.write();// 写出Excel表格
book.close();
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (UnsupportedEncodingException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (IOException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (RowsExceededException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (WriteException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
} catch (IllegalAccessException e) {
log.error(" 导出表格 ExcelUtils 的方法 exportExcel 出现异常……………………………");
e.printStackTrace();
}
}
/**
*
* @方法功能描述:实现Excel表格的解析
*
* @param copyUrlFile
* Excel 表格所在的路径
* @param sheetName
* Excel 表格中的sheet名子
* @param clazz
* 表单所对应的对象
* @param fildsNameList
* 表格的每一列所对应的Java对象的属性名称,每一个属性名称必须和对象的属性名一样
* @param isHaveTitle
* 表格是否有一个合并的Title
* </li>true 表示有</li>
* </li>false 表示没有</li>
*
* @param isHaveHead 表格是否有一个每一列的列头 这个应该是有的
* </li>true 表示有</li>
* </li>false 表示没有</li>
* @return
* @author: xxxx
* @CreateDate: Dec 29, 2011
*/
public static List parseExcel(String copyUrlFile, String sheetName, Class clazz, List<String>fildsNameList, boolean isHaveTitle, boolean isHaveHead) {
Workbook rwb = null;
Map<String, String> map = null;
List<String> valueList = null;//用来保存Excel表格的每一行中每一个单元格的内容
List listObj = new ArrayList();//保存每一行的行对象
try {
rwb = Workbook.getWorkbook(new File(copyUrlFile));
Sheet sheet = rwb.getSheet(sheetName);//根据sheetName表单的名字获取表单
int rows = sheet.getRows();//总行数
int columns = sheet.getColumns();//总列数
Field[] fields = clazz.getDeclaredFields();
for (int r = 0; r < rows; r++) {//行循环
if (isHaveTitle && isHaveHead) {
if (r == 1 || r == 0) {//排除合并的表头 和 每一列的列头
continue;
}
}
if (!isHaveTitle) {//如果没有合并的表头 排除每一列的列头
if (r == 0) {
continue;
}
}
map = new HashMap<String, String>();
valueList = new ArrayList<String>();
for (int c = 0; c < columns; c++) {//列循环
Cell cell = sheet.getCell(c,r);
String contents = cell.getContents();
// TODO 对输入的数据进行判断验证是否合法
// for (String fdName : fildsNameList) {
// System.out.println("fdName <===================> " + fdName);
// for (Field fd : fields) {
// if (fd.getName().equals(fdName)) {
// map.put(fdName, contents);
// break;
// }
// }
// }
valueList.add(contents);//把一行的每一列的值添加到valueList里面
if (c == (columns - 1)) {//当一行解析结束的时候就可以获取一个对象
for (int i = 0; i < fildsNameList.size(); i++) {
//key 和 value 应该是一一对应的
map.put(fildsNameList.get(i), valueList.get(i));
}
Object bean = clazz.newInstance();
Object objBean = copyMapToBean(map, bean);
listObj.add(objBean);
}
}
}
return listObj;
} catch (BiffException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (IOException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (InstantiationException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
} catch (IllegalAccessException e) {
log.error(" 导出表格 ExcelUtils 的方法 parseExcel 出现异常……………………………");
e.printStackTrace();
}
return null;
}
/**
*
* @方法功能描述:
* <li>将前台客户输入的form表单的内容封装到map里面</li>
* <li>注意map里面的 key 必须和bean里面的属性值一一对应</li>
* <li>也就是前台 from 的input标签的name要和bean对应</li>
*
* @param map
* 对应前的from表单输入的数据
* @param bean
* 要存库的数据库对象
* @param dateFormat
* <li>如果bean对象里面有java.utils.Date 类型需要将map里面的String转为date类型</li>
* <li>dateFormat 为指定的格式 默认为 'yyyyMMdd' </li>
* @return Object
* @author: xxxx
* @CreateDate: Dec 22, 2011
*/
public static Object copyMapToBean(Map<String, String> map, Object bean) {
Class clazz = bean.getClass();// 获取bean对象的class属性
Field[] fields = clazz.getDeclaredFields();
Object argsObj = null;// set方法执行的参数
for (Field fd : fields) {
try {
String fdType = fd.getType().toString();// 获取bean对象的字段属性
String key = fd.getName();// 获取字段名称作为map的键
String value = map.get(key);// 获取map中的值
if (value == null) {// 当value为null的时候说明该字段为非必填字段 循环继续执行
continue;// 慎重应用该关键字
}
// 此处要对fd的数据类型进行判断
if (fdType != null && fdType.equals("int")) {// int
argsObj = new Integer(value).intValue();
}
if (fdType != null && fdType.equals("class java.lang.Integer")) {// Integer
argsObj = new Integer(value);
}
if (fdType != null && fdType.equals("double")) {// double
argsObj = new Double(value).doubleValue();
}
if (fdType != null && fdType.equals("class java.lang.Double")) {// Double
argsObj = new Double(value);
}
if (fdType != null && fdType.equals("float")) {// float
argsObj = new Float(value).floatValue();
}
if (fdType != null && fdType.equals("class java.lang.Float")) {// Double
argsObj = new Float(value);
}
if (fdType != null && fdType.equals("long")) {// long
argsObj = new Long(value).longValue();
}
if (fdType != null && fdType.equals("class java.lang.Long")) {// Long
argsObj = new Long(value);
}
if (fdType != null && fdType.equals("short")) {// short
argsObj = new Short(value).shortValue();
}
if (fdType != null && fdType.equals("class java.lang.Short")) {// Short
argsObj = new Short(value);
}
// TODO 字符型
// TODO byte型
if (fdType != null && fdType.equals("class java.math.BigDecimal")) {// BigDecimal
argsObj = new BigDecimal(value);
}
/*
if (fdType != null && fdType.equals("class java.util.Date")) {// Date
if (dateFormat == null) {
dateFormat = "yyyyMMdd";
}
System.out.println("value-----eye---->" + value);
//argsObj = DateUtils.stringToDate(dateFormat, value);//转化日期对象
}*/
if (fdType != null && fdType.equals("class java.lang.String")) {// String 类型
argsObj = value;
}
boolean flag = fd.isAccessible();
fd.setAccessible(true);
// 执行bean对象的set方法
fd.set(bean, argsObj);
fd.setAccessible(flag);
} catch (IllegalArgumentException e) {
e.printStackTrace();
System.out.println("BeanCopyUtils----->copyMapToBean 方法执行异常");
} catch (IllegalAccessException e) {
e.printStackTrace();
System.out.println("BeanCopyUtils----->copyMapToBean 方法执行异常");
}
}
return bean;
}
//测试方法
public static void main(String[] args) {
String sheetName = "Sheet1";
String copyUrlFile_1 = "./src/test.xls";
//调用解析的方法实现解析
}
}
发表评论
-
Ftp链接传输数据假死&Windows本地测试正常问题
2014-10-28 17:26 3433在项目中使用commons-net ... -
com.jcraft.jsch.JSchException: channel is not opened.求解决方案
2014-09-27 10:20 10805这两天在试用SFTP传输文件的时候遇到了如下异常: 201 ... -
Java List 的remove() 方法的应用
2012-04-14 14:37 19444今天在用List的remove()方法的时候遇到了一个小问题, ... -
闲来无事写了一个利用JXL导出Excel的工具类(比较简单期待高手提供更加灵活的工具类)
2012-04-10 11:10 2618public class ExcelUtils { /** ... -
JQuery基本的事件3
2012-04-10 11:05 893对事件的支持主要包括: •bind()--为事件绑定处理程序 ...
相关推荐
下面我们将深入探讨JXL库在Java Excel解析中的应用。 ### 1. JXL库介绍 JXL(Java Excel API)是一个开源的Java库,专门用于处理Microsoft Excel文件。它支持多种操作,如创建新的工作簿、读取现有工作簿、修改工作...
在IT行业中,处理数据时,Excel表格是一种广泛使用的格式,特别是在数据分析、报表生成等领域。而Java作为企业级应用开发的主要语言之一,对于读取和写入Excel文件的需求同样旺盛。"jxl"库是一个用于Java的开源库,...
"使用jxl读取Excel表格数据"这个主题就是关于如何利用jxl库来实现这一目标。jxl是一个开源的Java库,它提供了对Microsoft Excel文件格式的支持,使得在Java中操作Excel变得简单。 首先,你需要获取jxl的jar包。由于...
本文将围绕“浅谈jxl解析excel ——复制、修改excel表”这一主题,深入探讨JXL库的使用方法和关键知识点。 首先,JXL库提供了丰富的API,使得开发人员可以方便地操作Excel文件的各个部分,如工作表、单元格、样式等...
JXL是一个开源库,专门设计用来读写Excel文件(.xls格式),使得在Java环境中解析Excel数据变得简单易行。 首先,让我们深入了解JXL库的基本用法。JXL支持多种操作,包括读取、创建、修改和写入Excel文件。以下是...
在IT行业中,Excel作为一种强大的电子表格工具,被广泛用于数据管理和分析。为了在程序中处理Excel数据,开发者经常需要借助库来实现Excel的读取和写入操作。本主题聚焦于"利用jxl实现excel解析",这是一项关键的...
本文将深入探讨JXL库,解析其核心功能,以及如何在项目中使用JAR包进行Excel处理。 JXL全称为Java Excel API,它为Java开发者提供了一个轻量级、易于使用的接口来处理Microsoft Excel文件。JXL支持多种Excel文件...
3. **解析Excel数据**:Jxl库提供了`Workbook`和`Sheet`等类来读取Excel内容。创建`Workbook`对象,然后获取对应的`Sheet`,进一步遍历单元格以获取数据。例如,`Sheet sheet = workbook.getSheet(0)`可获取第一个...
在Android平台上,解析Excel文件是一项常见的任务,尤其在数据处理、报表展示或者用户交互中。本文将详细讲解如何在Android应用中实现Excel文件的解析,主要聚焦于使用JXL库进行处理。 首先,JXL是一个Java库,专门...
这个过程可能涉及到读取Excel文件,使用jxl解析数据,然后通过iText或类似库将数据格式化并写入PDF。同时,如果要在PDF中保留Excel的原始布局和格式,可能还需要对单元格样式、字体、颜色等进行映射。 5. **最佳...
### 读取Excel文件将数据存入Map集合 在日常工作中,经常需要处理Excel文件,尤其是在数据统计、分析等场景中。本篇文章介绍了一个方法,该方法能够读取Excel文件并将其中的数据存储到Java中的`Map`集合里,便于...
后端接收到请求后,解析传递的数据,用jxl更新相应的Excel单元格,最后保存修改。 在实际项目中,还需要考虑错误处理、并发访问控制以及性能优化等问题。例如,多个用户同时修改同一个Excel文件时,需要确保数据...
例如,如果你有一个包含员工信息的Excel表格,你可以创建一个Employee类,该类的属性如name、age和email分别对应Excel的列。 以下是一个简单的示例,展示了如何使用jxl实现Row-Bean模式: 1. 首先,创建一个对应的...
JXL提供了`Workbook`类来代表整个Excel工作簿,`Sheet`类代表工作簿中的单个表格,而`Cell`类则对应Excel中的单个单元格。 **步骤3:替换EL表达式** 遍历Excel模板中的每个单元格,检查是否存在EL表达式。如果存在...
**标题详解:**"jxl.jar (JAVA对EXCEL表格的操作)" `jxl.jar` 是一个Java类库,主要用于处理Microsoft Excel文件。这个库使得Java开发者能够在程序中读取、写入、编辑以及创建Excel电子表格。它提供了丰富的API接口...
Excel主要用于存储和处理结构化的表格数据,而JSON(JavaScript Object Notation)则是网络传输数据的常用格式,尤其适合前后端交互。本篇文章将围绕如何将Excel数据转换为JSON,以及将JSON数据写入到新的Excel文件...
总之,使用JXL处理不规范的Excel文件,尤其是含有合并单元格的情况,需要对JXL API有深入的理解,并能灵活地调整数据处理策略。在编写代码时,应充分考虑到可能的边界条件和异常情况,以确保程序的健壮性和正确性。...
- **转换到PDF**:对于每个Excel表格,创建一个PdfPTable对象,并将Excel的行和列数据添加到表格中。根据从JXL获取的格式信息,设置PDF表格的样式。 - **写入PDF**:将创建的表格添加到PDF文档中,使用Document...
总的来说,通过Java和JExcelAPI,我们可以方便地读取Excel文件,解析其中的数据,并将这些数据存储到数据库中。这种方法在数据迁移、数据导入和数据处理等场景中非常实用。在实际开发中,可能还需要处理异常、优化...
我们将探讨如何利用jxl库解析XML数据并将其转化为Excel格式。 首先,XML(Extensible Markup Language)是一种用于存储和传输数据的标准格式,广泛应用于Web服务、配置文件和数据交换。而Excel是Microsoft Office...