java修改另存excel_JAVA 读取Excel表格内容并修改

本人之前做过这个,使用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 

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 

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

* 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() 

// System.out.println("dt1在dt2后");

return -1;

} else {

return 0;

}

} catch (Exception exception) {

exception.printStackTrace();

}

return 0;

}

你弄一个HTML和action,上面这代码修改几个关键点可以直接使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值