需要jxl库
菜单
import java.util.Scanner;
public class Menu {
public Menu()throws Exception {
while(true) {
System.out.println("--------文件操作--------");
System.out.println("1.创建表格 2.读取表格");
System.out.println("3.添加一行 4.按学号查找");
System.out.println("5.按学号删除 6.按学号修改");
System.out.println(" 0.退出!");
System.out.println("--------主目菜单--------");
//读入
Make MK=new Make();
Scanner scanf=new Scanner(System.in);
int i=scanf.nextInt();
switch(i) {
case 1:{
MK.Create();
break;
}case 2:{
MK.Read();
break;
}case 3:{
MK.add();
break;
}case 4:{
MK.Find();
break;
}case 5:{
MK.Delete();
break;
}case 6:{
MK.Alter();
break;
}case 0:{
System.out.println("退出程序");
System.exit(0);
}default:{
System.out.println("输入错误,请重新输入!");
break;
}
}
}
}
}
实现方法
/**
* @author lpc
*
*/
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import jxl.*;
import jxl.write.*;
public class Make {
//1.创建
public void Create() throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//创建可读写wordkbook
WritableWorkbook wb=Workbook.createWorkbook(f);
//创建可读写sheet
WritableSheet sheet=wb.createSheet("Unnamed",0);
System.out.println("是否写入默认数据?(1是/0否):");
if(scanf.nextInt()==1) {
//拆分信息
String xx="学号:姓名:年龄:成绩|181001:张三:20:95|181002:李四:21:87|181003:20:89";
String temp[]=xx.split("\\|");
String[][] stu;
stu=new String[temp.length][];
for(int i=0;i<temp.length;i++) {
stu[i]=temp[i].split(":");
}
//写入表格
for(int i=0;i<stu.length;i++) {
for(int j=0;j<stu[i].length;j++) {
Label lb=new Label(j,i,stu[i][j]);
sheet.addCell(lb);
}
}
System.out.println("成功创建表格并写入默认信息!");
}else {
System.out.println("成功创建空表格!");
}
//写入文件
wb.write();
//关闭
wb.close();
}
//2.读取
public void Read() throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//创建一个只读对象表
Workbook wb=Workbook.getWorkbook(f);
//获取sheet对象
Sheet[] sheet=wb.getSheets();
//获取表格内容
for(int i=0;i<sheet.length;i++) {//按sheet表顺序
for(int j=0;j<sheet[i].getRows();j++) {//按行(rows)来
for(int k=0;k<sheet[i].getColumns();k++) {//按本行的列数一个个输出
//第i个表的k列j行的内容
String content=sheet[i].getCell(k, j).getContents();
System.out.print(content+"\t");//输出这个content并且对齐
}
System.out.println();//每一行换行
}
}
wb.close();
}
//3.添加
public void add() throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//获取Workbook对象,只读
Workbook wb=Workbook.getWorkbook(f);
//创建可读写Workbook副本,写入源文件
WritableWorkbook fwb=Workbook.createWorkbook(f, wb);
//创建sheet对象
WritableSheet sheet=fwb.getSheet(0);
//取原表行数
int row=sheet.getRows();
//创建cell对象并添加进sheet
System.out.println("输入一行数据,使用 : 分隔列:");
str=scanf.nextLine();
String stu[]=str.split(":");
for(int i=0;i<stu.length;i++) {
Label lb=new Label(i,row,stu[i]);
sheet.addCell(lb);
}
//将workbook内容输出到文件
fwb.write();
//关闭对象
fwb.close();
wb.close();
}
//4.查找
public void Find() throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//获取Workbook对象,只读
Workbook wb=Workbook.getWorkbook(f);
Sheet[] sheet=wb.getSheets();
System.out.println("输入需要查找的学号:");
String stu_id=scanf.nextLine();
int flag=0;
for1:
for(int i=0;i<sheet.length;i++)
//遍历第一列
for(int j=0;j<sheet[i].getRows();j++) {
String temp=sheet[i].getCell(0,j).getContents();
if(temp.equals(stu_id)) {
flag=1;
//输出该行内容
for(int k=0;k<sheet[i].getColumns();k++) {
temp=sheet[i].getCell(k,j).getContents();
System.out.print(temp+"\t");
}System.out.println();
break for1;
}
}
if(flag!=1) {
System.out.println("未找到该学号信息!");
}
wb.close();
}
//5.按学号删除
public void Delete()throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//获取Workbook对象,只读
Workbook wb=Workbook.getWorkbook(f);
Sheet[] sheet=wb.getSheets();
System.out.println("输入需要删除学生的学号:");
String stu_id=scanf.nextLine();
int flag=0;
System.out.println("正在删除id="+stu_id+"的学生:");
for1:
for(int i=0;i<sheet.length;i++)
//遍历第一列
for(int j=0;j<sheet[i].getRows();j++) {
String temp=sheet[i].getCell(0,j).getContents();
if(stu_id.equals(temp)){
flag=1;
WritableWorkbook fwb=Workbook.createWorkbook(f, wb);
WritableSheet fsheet=fwb.getSheet(i);
fsheet.removeRow(j);
fwb.write();
fwb.close();
System.out.println("删除成功!");
break for1;
}
}
if(flag!=1) {
System.out.println("未找到该学号信息!");
}
wb.close();
}
//6.修改
public void Alter() throws Exception{
//输入文件地址
Scanner scanf=new Scanner(System.in);
Scanner fstr=new Scanner(System.in);
String str=scanf.nextLine();
//新建文件对象
File f=new File(str);
//获取Workbook对象,只读
Workbook wb=Workbook.getWorkbook(f);
Sheet[] sheet=wb.getSheets();
System.out.println("输入需要修改学生的学号:");
String stu_id=scanf.nextLine();
int flag=0;
for1:
for(int i=0;i<sheet.length;i++) {
//遍历第一列
for(int j=0;j<sheet[i].getRows();j++) {
String temp=sheet[i].getCell(0,j).getContents();
if(temp.equals(stu_id)) {
flag=1;
WritableWorkbook fwb=Workbook.createWorkbook(f, wb);
WritableSheet fsheet=fwb.getSheet(i);
//输出该行内容
System.out.println("该行数据为:");
String[] TempF=new String[fsheet.getColumns()];
for(int k=0;k<fsheet.getColumns();k++) {
TempF[k]=fsheet.getCell(k, j).getContents();
System.out.print(TempF[k]+"\t");}
while(true) {
System.out.println();//换行
System.out.println("你要修改第几列?(1——"+sheet[i].getColumns()+")?:(输入0退出修改)");
int k=scanf.nextInt()-1;
if(k==-1) {
break;
}System.out.println("输入新的内容:");
temp=scanf.next();
System.out.println("确认修改?1是确认");
int fok=scanf.nextInt();
if(fok==1) {
TempF[k]=temp;
Label lb=new Label(k,j,TempF[k]);
fsheet.addCell(lb);
System.out.println("修改成功!");}else {
System.out.println("取消修改!");
}
System.out.println("修改后的数据为:");
for(k=0;k<TempF.length;k++)
System.out.print(TempF[k]+"\t");
System.out.println();//换行
}fwb.write();
fwb.close();
break for1;
}
}
}
if(flag!=1) {
System.out.println("未找到该学号信息!");
}
wb.close();
}
}