使用了POI来对Excel进行操作
package emmm;//可删掉
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Set;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
/**
* 写入Exce表格
* @author Skity666
*CopyRight(c) 2020 Skity666. All Rights Reserved
* @date 2020年5月19日
*/
public class Test {
/*
* 向Excel写入数据
*/
public static void setExce(Set<String> set){
try {
FileOutputStream out=null;
//文件名
String fileName="ss.xls";
//文件夹路径更换成你想用的路径
String path = "F://eclipse//Five//WebContent//file//";
//文件路径
String filePath=path+fileName;
//创建文件夹
File Path=new File(path);
if (!Path.exists()) {
Path.mkdirs();
}
//创建文件
File file=new File(filePath);
if (!file.exists()) {
file.createNewFile();
//创建一个工作簿
HSSFWorkbook wb=new HSSFWorkbook();
//创建一个sheet页
HSSFSheet sheet=wb.createSheet("userInfo");
//创建第一行
HSSFRow title=sheet.createRow(0);
//这里你可以直接封装你的标题
String[] str= {"name","file","classes","sex","age"};
//循环写入标题
for(int i=0;i<str.length;i++) {
//获取单元格
HSSFCell cell=title.createCell(i);
//设置单元格的值
cell.setCellValue(str[i]);
}
//创建第二行
title=sheet.createRow(1);
int i=0;
//循环写入数据
for(String s:set ) {
//获取单元格
HSSFCell cell=title.createCell(i);
//设置单元格的值
cell.setCellValue(s);
i++;
}
//获取输出流
out=new FileOutputStream(file);
//向out写入数据
wb.write(out);
//刷新
out.flush();
//关闭流和工作簿
out.close();
wb.close();
}else {//说明文件存在,要追加数据
//获取该文件的输入流
FileInputStream in=new FileInputStream(filePath);
//如果输入流不为空
if(in!=null) {
//获取工作簿
Workbook wb=WorkbookFactory.create(in);
//获取sheet页
Sheet sheet=wb.getSheetAt(0);
int rowIndex=0;
//判断现在sheet页里面有几行
for(Row row:sheet) {
if(row==null)//如果行中没有数据,说明它不是有效行
break;
rowIndex++;
}
//创建有效行数后的第一行
Row main=sheet.createRow(rowIndex);
int i=0;
//循环写入数据
for(String s:set ) {
//获取单元格
Cell cell=main.createCell(i);
//设置单元格值
cell.setCellValue(s);
i++;
}
//关闭输入流
in.close();
//获得输出流
out=new FileOutputStream(file);
//写入输出流
wb.write(out);
//刷新
out.flush();
//关闭流和工作簿
out.close();
wb.close();
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("出错了");
}
}
/*
* 从Excel读出数据
* 这里我用的void类型,你可以自己封装一个类,然后使用集合,例如Set<User>,方便你在别的界面输出数据或渲染界面
*/
public static void getExce(){
try {
//文件名
String fileName="ss.xls";
//文件夹路径
String path = "F://eclipse//Five//WebContent//file//";
//文件路径
String filePath=path+fileName;
//获取该文件的输入流
FileInputStream in=new FileInputStream(filePath);
//如果输入流不为空
if(in!=null) {
//获取工作簿
Workbook wb=WorkbookFactory.create(in);
//获取sheet页
Sheet sheet=wb.getSheetAt(0);
//判断现在sheet页里面有几行
for(Row row:sheet) {
if(row==null)//如果行中没有数据,说明它不是有效行
break;
for(Cell cell:row) {
if(cell==null)//如果行中没有数据,说明它不是有效行
break;
//获取每个单元格的值
System.out.println(cell.getStringCellValue());
}
}
//关闭输入流
in.close();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("出错了");
}
}
}
jar包链接:
https://ww.lanzous.com/b01bf12kb 密码:asda
idea 如果不会导包的详见
https://jingyan.baidu.com/article/0f5fb0993e9e1f6d8334ead2.html
在idea里面光导包进去还不行,会跳出 500无法为jsp编译类
这是你包导进去了,但是没有添加到实例里面
步骤:
如果你包导完了,你这边会提示有数字
点进去,点【fix】添加到实例里面去,就行了
希望对你能有所帮助( ^ _ ^ )
有意见的请下方评论区见!