JAVA 读取Excel表格内容并修改 exceljava文档 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我之前做过这个,使用jxl来操作Excel直接给你源码吧: /** * 判断文件是否存在,存在修改,不存在创建并添加数据 * * @param route * 包名+路径 */ @SuppressWarnings("null") public void saveZkfp() { File file = new File(fileRoute); PrintWriter out = null; try { // 将输出的编码改为utf-8 getResponse().setContentType("text/html;charset=utf-8"); out = getResponse().getWriter(); // 判断zkfp.xls文件是否存在,不存在则创建zkfp.xls文件,存在则进行修改 if (!file.exists() && !file.isDirectory()) { // Excel表格不存在,创建Excel表格并添加数据 // 添加表以及字段 if (createExcel(fileRoute, userKzfp, userName)) { out.print(userKzfp + userno1); // out.print("添加成功"); } } else { // 文件已存在,添加用户信息,不创建Excel表格 // 添加扫描指纹的时间 if (this.savwUser(fileRoute, userKzfp, userName)) { out.print(userKzfp + userno1); // out.print("添加成功"); } } } catch (IOException e) { // e.printStackTrace(); out.print("操作失败" + "----" + e); } } /** * 创建Excel表格并添加数据 * * @param numberno * 编号 * @param route * 路径+包名 * @param name * 姓名 */ public Boolean createExcel(String fileno, String route, String name) { try { // 打开文件 WritableWorkbook book = Workbook.createWorkbook(new File(fileno)); // 生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet1 = book.createSheet("用户表", 0); WritableSheet sheet2 = book.createSheet("时间表", 1); // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) // 以及单元格内容为test // 创建用户表的字段 Label label11 = new Label(0, 0, "序号"); Label label12 = new Label(1, 0, "编号"); Label label13 = new Label(2, 0, "指纹"); Label label14 = new Label(3, 0, "姓名"); // 创建时间表的字段 Label label21 = new Label(0, 0, "序号"); Label label22 = new Label(1, 0, "员工姓名"); Label label23 = new Label(2, 0, "上班"); Label label24 = new Label(3, 0, "下班"); // 将定义好的单元格添加到工作表中 // 将用户表的字段绑定到用户表上 sheet1.addCell(label11); sheet1.addCell(label12); sheet1.addCell(label13); sheet1.addCell(label14); // 将时间表的字段绑定到时间表上 sheet2.addCell(label21); sheet2.addCell(label22); sheet2.addCell(label23); sheet2.addCell(label24); // 获取行 int length1 = sheet1.getRows(); int length2 = sheet2.getRows(); this.userno1 = "keluo" + length1; // 添加数据 // 为用户表添加数据 jxl.write.Number user11 = new jxl.write.Number(0, length1, length1); Label user12 = new Label(1, length1, "keluo1"); Label user13 = new Label(2, length1, route + userno1 + ".tpl"); Label user14 = new Label(3, length1, name); // 为时间表添加数据 jxl.write.Number createDate1 = new jxl.write.Number(0, length2, length2); Label createDate2 = new Label(1, length2, name); Label createDate3 = null; Label createDate4 = null; // 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1 if (compare_date(df2.format(new Date()), isTime) == -1) { //上班 createDate3 = new Label(2, length2, df.format(new Date())); createDate4 = new Label(3, length2, null); } else { //下班 createDate3 = new Label(2, length2, null); createDate4 = new Label(3, length2, df.format(new Date())); } sheet1.addCell(user11); sheet1.addCell(user12); sheet1.addCell(user13); sheet1.addCell(user14); sheet2.addCell(createDate1); sheet2.addCell(createDate2); sheet2.addCell(createDate3); sheet2.addCell(createDate4); // 写入数据并关闭文件 book.write(); book.close(); return true; } catch (Exception e) { System.out.println(e); return false; } } /** * 添加用户信息 * * @param numberno * @param route * @param name */ public Boolean savwUser(String fileno, String route, String name) { try { // ----------------------------------------------------- // ---------- 添加一个用户指纹信息 ------------- // ----------------------------------------------------- // 打开文件 Workbook book = Workbook.getWorkbook(new File(fileno)); // 获得第一个工作表对象 Sheet sheet1 = book.getSheet(0); // 获得第一个工作表对象 Sheet sheet2 = book.getSheet(1); // 获取行 int length1 = sheet1.getRows(); int length2 = sheet2.getRows(); // 根据book创建一个操作对象 WritableWorkbook wbook = Workbook.createWorkbook(new File(fileno), book); // 得到一个工作对象 WritableSheet sh1 = wbook.getSheet(0); WritableSheet sh2 = wbook.getSheet(1); userno1 = "keluo" + length1; // 创建用户表数据 jxl.write.Number user11 = new jxl.write.Number(0, length1, length1); Label user12 = null; // 比较指纹获取用户编号 for (int i = 0; i < length1; i++) { Cell a1 = sh1.getCell(3, i); // 此处是获取单个单元格的数据 String sa2 = a1.getContents(); if (name.equals(sa2)) { // Cell a1=sheet.getCell(0,i); // 此处是获取单个单元格的数据 Cell a2 = sh1.getCell(1, i); user12 = new Label(1, length1, a2.getContents()); break; } } if (user12 == null) { user12 = new Label(1, length1, "keluo" + length1); } // Label user12 = new Label(1, length1 , "keluo" + length1); Label user13 = new Label(2, length1, route + userno1 + ".tpl"); Label user14 = new Label(3, length1, name); // 将用户表数据添加到用户表上 sh1.addCell(user11); sh1.addCell(user12); sh1.addCell(user13); sh1.addCell(user14); // 创建时间表数据 jxl.write.Number label0 = new jxl.write.Number(0, length2, length2); Label label = new Label(1, length2, name); //添加时间 Label createDate3 = null; Label createDate4 = null; // 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1 if (compare_date(df2.format(new Date()), isTime) == -1) { //上班 createDate3 = new Label(2, length2, df.format(new Date())); createDate4 = new Label(3, length2, null); } else { //下班 createDate3 = new Label(2, length2, null); createDate4 = new Label(3, length2, df.format(new Date())); } // 将时间表数据添加到时间表上 sh2.addCell(label0); sh2.addCell(label); sh2.addCell(createDate3); sh2.addCell(createDate4); wbook.write(); wbook.close(); return true; } catch (Exception e) { System.out.println(e); return false; } } /* * 添加用户信息并添加一天相应的指纹信息 */ @SuppressWarnings("null") public void addUserZkfpDate() { PrintWriter out = null; try { // 将输出的编码改为utf-8 getResponse().setContentType("text/html;charset=utf-8"); out = getResponse().getWriter(); String usersno = getRouteUserNo(fileRoute, userKzfp); if (usersno != null) { if (saveZkfpDate(usersno, fileRoute)) { out.print("打卡成功,谢谢"); } else { out.print("打卡失败,请重新输入指纹!"); } } else { out.print("打卡失败,请重新输入指纹!"); } } catch (IOException e) { out.print("打卡失败,错误为:" + "------" + e); } } /** * 添加扫描指纹的时间 * * @param userno * @param zkfp */ public Boolean saveZkfpDate(String userno, String zkfp) { try { Workbook book = Workbook.getWorkbook(new File(zkfp)); // 获得第一个工作表对象 Sheet sheet = book.getSheet(1); // 获取行 int length = sheet.getRows(); // 根据book创建一个操作对象 WritableWorkbook wbook = Workbook.createWorkbook(new File(zkfp), book); // 得到一个工作对象 WritableSheet sh = wbook.getSheet(1); jxl.write.Number label0 = new jxl.write.Number(0, length, length); Label label = new Label(1, length, userno); //添加时间 Label createDate3 = null; Label createDate4 = null; // 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1 if (compare_date(df2.format(new Date()), isTime) == -1) { //上班 createDate3 = new Label(2, length, df.format(new Date())); createDate4 = new Label(3, length, null); } else { //下班 createDate3 = new Label(2, length, null); createDate4 = new Label(3, length, df.format(new Date())); } //Label createDate = new Label(2, length, df.format(new Date())); sh.addCell(label0); sh.addCell(label); sh.addCell(createDate3); sh.addCell(createDate4); wbook.write(); wbook.close(); return true; } catch (Exception e) { System.out.println(e); return false; } } /* * 根据指纹模板获取用户编号 */ public static String getRouteUserNo(String fileRoute, String zkfp) { // 用户的编号 String uno = null; try { Workbook book = Workbook.getWorkbook(new File(fileRoute)); // 获得第一个工作表对象 Sheet sheet = book.getSheet(0); // 获取行 int len = sheet.getRows(); // 比较指纹获取用户编号 for (int i = 0; i < len; i++) { Cell a1 = sheet.getCell(2, i); // 此处是获取单个单元格的数据 String sa2 = a1.getContents(); if (zkfp.equals(sa2)) { // Cell a1=sheet.getCell(0,i); // 此处是获取单个单元格的数据 Cell a2 = sheet.getCell(3, i); uno = a2.getContents(); System.out.println(uno); break; } else { uno = null; } } book.close(); return uno; } catch (Exception e) { System.out.println(e); return null; } } /* * 日期时间比较(data1、data2) * return data1<tata2 -1 * return data1>tata2 1 * return +1/-1 */ public int compare_date(String DATE1, String DATE2) { DateFormat df = new SimpleDateFormat("hh:mm:ss"); try { Date dt1 = df.parse(DATE1); Date dt2 = df.parse(DATE2); if (dt1.getTime() > dt2.getTime()) { // System.out.println("dt1 在dt2前"); return 1; } else if (dt1.getTime() < dt2.getTime()) { // System.out.println("dt1在dt2后"); return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; }你弄一个HTML和action,上面这代码修改几个关键点可以直接使用 Editor表情显示问题 JBPM问题 急急急 java通过jacob创建word文档中遇到的问题 displaytag的疑问,在线等 java RMI 问题 高手请进,小弟在线恭候...先谢谢了啊! 说说你在用struts1还是struts2在开发 根据一个数来生成一组随机数的组件 关于SOAP的问题 关于汉字转化为拼音的ASCII规律 eclipse莫名其妙的报错 不知道点了什么,导致Eclipse中文件打开格式总是文本,快哭了 折腾了一天的问题(加载struts2配置文件的问题)求科普
* 判断文件是否存在,存在修改,不存在创建并添加数据
*
* @param route
* 包名+路径
*/
@SuppressWarnings("null")
public void saveZkfp() {
File file = new File(fileRoute);
PrintWriter out = null;
try {
// 将输出的编码改为utf-8
getResponse().setContentType("text/html;charset=utf-8");
out = getResponse().getWriter();
// 判断zkfp.xls文件是否存在,不存在则创建zkfp.xls文件,存在则进行修改
if (!file.exists() && !file.isDirectory()) {
// Excel表格不存在,创建Excel表格并添加数据
// 添加表以及字段
if (createExcel(fileRoute, userKzfp, userName)) {
out.print(userKzfp + userno1);
// out.print("添加成功");
}
} else {
// 文件已存在,添加用户信息,不创建Excel表格
// 添加扫描指纹的时间
if (this.savwUser(fileRoute, userKzfp, userName)) {
out.print(userKzfp + userno1);
// out.print("添加成功");
}
}
} catch (IOException e) {
// e.printStackTrace();
out.print("操作失败" + "----" + e);
}
} /**
* 创建Excel表格并添加数据
*
* @param numberno
* 编号
* @param route
* 路径+包名
* @param name
* 姓名
*/
public Boolean createExcel(String fileno, String route, String name) {
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File(fileno));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet1 = book.createSheet("用户表", 0);
WritableSheet sheet2 = book.createSheet("时间表", 1);
// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
// 以及单元格内容为test
// 创建用户表的字段
Label label11 = new Label(0, 0, "序号");
Label label12 = new Label(1, 0, "编号");
Label label13 = new Label(2, 0, "指纹");
Label label14 = new Label(3, 0, "姓名");
// 创建时间表的字段
Label label21 = new Label(0, 0, "序号");
Label label22 = new Label(1, 0, "员工姓名");
Label label23 = new Label(2, 0, "上班");
Label label24 = new Label(3, 0, "下班"); // 将定义好的单元格添加到工作表中
// 将用户表的字段绑定到用户表上
sheet1.addCell(label11);
sheet1.addCell(label12);
sheet1.addCell(label13);
sheet1.addCell(label14);
// 将时间表的字段绑定到时间表上
sheet2.addCell(label21);
sheet2.addCell(label22);
sheet2.addCell(label23);
sheet2.addCell(label24);
// 获取行
int length1 = sheet1.getRows();
int length2 = sheet2.getRows(); this.userno1 = "keluo" + length1;
// 添加数据
// 为用户表添加数据
jxl.write.Number user11 = new jxl.write.Number(0, length1, length1);
Label user12 = new Label(1, length1, "keluo1");
Label user13 = new Label(2, length1, route + userno1 + ".tpl");
Label user14 = new Label(3, length1, name);
// 为时间表添加数据
jxl.write.Number createDate1 = new jxl.write.Number(0, length2,
length2);
Label createDate2 = new Label(1, length2, name); Label createDate3 = null;
Label createDate4 = null;
// 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1
if (compare_date(df2.format(new Date()), isTime) == -1) {
//上班
createDate3 = new Label(2, length2, df.format(new Date()));
createDate4 = new Label(3, length2, null);
} else {
//下班
createDate3 = new Label(2, length2, null);
createDate4 = new Label(3, length2, df.format(new Date()));
} sheet1.addCell(user11);
sheet1.addCell(user12);
sheet1.addCell(user13);
sheet1.addCell(user14); sheet2.addCell(createDate1);
sheet2.addCell(createDate2);
sheet2.addCell(createDate3);
sheet2.addCell(createDate4); // 写入数据并关闭文件
book.write();
book.close();
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
} /**
* 添加用户信息
*
* @param numberno
* @param route
* @param name
*/
public Boolean savwUser(String fileno, String route, String name) {
try {
// -----------------------------------------------------
// ---------- 添加一个用户指纹信息 -------------
// -----------------------------------------------------
// 打开文件
Workbook book = Workbook.getWorkbook(new File(fileno));
// 获得第一个工作表对象
Sheet sheet1 = book.getSheet(0);
// 获得第一个工作表对象
Sheet sheet2 = book.getSheet(1);
// 获取行
int length1 = sheet1.getRows();
int length2 = sheet2.getRows(); // 根据book创建一个操作对象
WritableWorkbook wbook = Workbook.createWorkbook(new File(fileno),
book);
// 得到一个工作对象
WritableSheet sh1 = wbook.getSheet(0);
WritableSheet sh2 = wbook.getSheet(1); userno1 = "keluo" + length1; // 创建用户表数据
jxl.write.Number user11 = new jxl.write.Number(0, length1, length1); Label user12 = null; // 比较指纹获取用户编号
for (int i = 0; i < length1; i++) {
Cell a1 = sh1.getCell(3, i);
// 此处是获取单个单元格的数据
String sa2 = a1.getContents();
if (name.equals(sa2)) {
// Cell a1=sheet.getCell(0,i);
// 此处是获取单个单元格的数据
Cell a2 = sh1.getCell(1, i);
user12 = new Label(1, length1, a2.getContents());
break;
}
}
if (user12 == null) {
user12 = new Label(1, length1, "keluo" + length1);
}
// Label user12 = new Label(1, length1 , "keluo" + length1);
Label user13 = new Label(2, length1, route + userno1 + ".tpl");
Label user14 = new Label(3, length1, name); // 将用户表数据添加到用户表上
sh1.addCell(user11);
sh1.addCell(user12);
sh1.addCell(user13);
sh1.addCell(user14); // 创建时间表数据
jxl.write.Number label0 = new jxl.write.Number(0, length2, length2);
Label label = new Label(1, length2, name);
//添加时间
Label createDate3 = null;
Label createDate4 = null;
// 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1
if (compare_date(df2.format(new Date()), isTime) == -1) {
//上班
createDate3 = new Label(2, length2, df.format(new Date()));
createDate4 = new Label(3, length2, null);
} else {
//下班
createDate3 = new Label(2, length2, null);
createDate4 = new Label(3, length2, df.format(new Date()));
}
// 将时间表数据添加到时间表上
sh2.addCell(label0);
sh2.addCell(label);
sh2.addCell(createDate3);
sh2.addCell(createDate4); wbook.write();
wbook.close();
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
} /*
* 添加用户信息并添加一天相应的指纹信息
*/
@SuppressWarnings("null")
public void addUserZkfpDate() {
PrintWriter out = null;
try {
// 将输出的编码改为utf-8
getResponse().setContentType("text/html;charset=utf-8");
out = getResponse().getWriter();
String usersno = getRouteUserNo(fileRoute, userKzfp);
if (usersno != null) {
if (saveZkfpDate(usersno, fileRoute)) {
out.print("打卡成功,谢谢");
} else {
out.print("打卡失败,请重新输入指纹!");
}
} else {
out.print("打卡失败,请重新输入指纹!");
}
} catch (IOException e) {
out.print("打卡失败,错误为:" + "------" + e);
}
} /**
* 添加扫描指纹的时间
*
* @param userno
* @param zkfp
*/
public Boolean saveZkfpDate(String userno, String zkfp) {
try {
Workbook book = Workbook.getWorkbook(new File(zkfp));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(1);
// 获取行
int length = sheet.getRows();
// 根据book创建一个操作对象
WritableWorkbook wbook = Workbook.createWorkbook(new File(zkfp),
book);
// 得到一个工作对象
WritableSheet sh = wbook.getSheet(1); jxl.write.Number label0 = new jxl.write.Number(0, length, length);
Label label = new Label(1, length, userno);
//添加时间
Label createDate3 = null;
Label createDate4 = null;
// 当前时间和10:00:00比较,如果当前时间小于10:00:00则返回-1
if (compare_date(df2.format(new Date()), isTime) == -1) {
//上班
createDate3 = new Label(2, length, df.format(new Date()));
createDate4 = new Label(3, length, null);
} else {
//下班
createDate3 = new Label(2, length, null);
createDate4 = new Label(3, length, df.format(new Date()));
}
//Label createDate = new Label(2, length, df.format(new Date()));
sh.addCell(label0);
sh.addCell(label);
sh.addCell(createDate3);
sh.addCell(createDate4); wbook.write();
wbook.close();
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
} /*
* 根据指纹模板获取用户编号
*/
public static String getRouteUserNo(String fileRoute, String zkfp) {
// 用户的编号
String uno = null;
try {
Workbook book = Workbook.getWorkbook(new File(fileRoute));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 获取行
int len = sheet.getRows();
// 比较指纹获取用户编号
for (int i = 0; i < len; i++) {
Cell a1 = sheet.getCell(2, i);
// 此处是获取单个单元格的数据
String sa2 = a1.getContents();
if (zkfp.equals(sa2)) {
// Cell a1=sheet.getCell(0,i);
// 此处是获取单个单元格的数据
Cell a2 = sheet.getCell(3, i);
uno = a2.getContents();
System.out.println(uno);
break;
} else {
uno = null;
}
}
book.close();
return uno;
} catch (Exception e) {
System.out.println(e);
return null;
} } /*
* 日期时间比较(data1、data2)
* return data1<tata2 -1
* return data1>tata2 1
* return +1/-1
*/
public int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("hh:mm:ss");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
// System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
// System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}你弄一个HTML和action,上面这代码修改几个关键点可以直接使用