JAVA向Excel写入数据 和 从Excel读取数据

1 篇文章 0 订阅
1 篇文章 0 订阅

使用了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】添加到实例里面去,就行了

希望对你能有所帮助( ^ _ ^ )
有意见的请下方评论区见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值