javaweb-Excel导入导出后台代码
前言:
导入导出后台java代码写好很久了,但是。。。但是。。。前台不会写啊。
先把后台代码帖上吧
1、excelToDb
package util;
/**
* 代码解释:此方法将传入一个URL,即为当前用户所上传的Excel的目标路径,然后返回一个泛型为StudentInfoEntity的ArrayList
*/ import java.io.File;
import java.io.IOException;
import java.util.ArrayList; import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import dao.DistrictDao;
import dao.impl.DistrictDaoImp; import entity.District; public class ExcelToList {
public ArrayList<District> excelTo(String URL) throws IOException{
//创建list集合存放对象
ArrayList<District> list = new ArrayList<District>(); File file = new File(URL); Workbook workbook=null;
try {
workbook = WorkbookFactory.create(file);
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//代码解释:读取默认第一个工作表sheet
Sheet sheet = workbook.getSheetAt(0);
//代码解释:获取sheet中最后一行行号
int lastRowNum = sheet.getLastRowNum();
// System.out.println("lastRowNum========="+lastRowNum);
//代码解释:循环所有行
ArrayList<String> list2 = new ArrayList<String>();
for (int i = 1; i <= lastRowNum; i++) {
//代码解释:获取当前行中的内容
Row row = sheet.getRow(i);
short cell = row.getLastCellNum();
// System.out.println("cellnumber======="+cell);
if(row !=null && cell!=0){
for(int j=0;j<cell;j++){
District district=new District();
Cell name=row.getCell(j);
district.setName(getValue(name));
list.add(district);
}
}
}
return list;
}
//取单元格中的值
public String getValue(Cell cell){
String result="";
if(cell.getCellType() == cell.CELL_TYPE_BOOLEAN){
//返回布尔类型的值
result = cell.getBooleanCellValue() +"";
}else if(cell.getCellType() == cell.CELL_TYPE_NUMERIC){
//返回数值类型的值
if(HSSFDateUtil.isCellDateFormatted(cell)){
result = DateUtil.getJavaDate(cell.getNumericCellValue()).toString();
}else{
result = cell.getNumericCellValue()+"";
}
return String.valueOf(cell.getNumericCellValue());
}else if(cell.getCellType() == cell.CELL_TYPE_FORMULA){
result = cell.getCellFormula();
}else if(cell.getCellType() == cell.CELL_TYPE_STRING){
result = cell.getStringCellValue();
}else{
//返回字符口串类型的值
result = cell.getStringCellValue();
}
return result;
} public static void main(String[] args) throws IOException {
ExcelToList excelToList=new ExcelToList();
ArrayList<District> list =excelToList.excelTo("D:\\work\\File\\district.xls");
DistrictDao dao=new DistrictDaoImp();
for (District district : list) {
dao.addDistrict(district);
}
} }
这里我设想的很美,JSP页面点击导入,选择文件,给我个xls的路径,我就可以返回给你个结果list集供你页面显示。但是在点击打开选择文件窗口选择文件确认后传路径给后台的JS代码我不会写。。。。。
2、listToExcel:导出
package util; import java.io.File;
import java.io.FileOutputStream;
import java.util.List; import org.apache.commons.io.FileUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import dao.DistrictDao;
import dao.impl.DistrictDaoImp; import entity.District; /**
* 导出,从数据库中导出数据,并生成excel文件
* @author 0
*
*/
public class OutExcel {
//动态从JSp页面获取标题
public String downloadGrade(String contextPath,String filename){
DistrictDao districtDao=new DistrictDaoImp();
List<District> listd = districtDao.getDistricts();
String[] title={"ID","disname"};
//创建excel工作薄
XSSFWorkbook workbook=new XSSFWorkbook();
//创建一个工作表sheet
XSSFSheet sheet=workbook.createSheet();
//创建第一行
XSSFRow row=sheet.createRow(0);
XSSFCell cell=null;
//插入第一行数据 id 地区名称
for(int i=0;i<title.length;i++){
//创建一行的一格
cell = row.createCell(i);
//赋值
cell.setCellValue(title[i]);
}
//追加数据行数
int j=1;
for(int i=0;i<listd.size();i++){
//从集合中得到一个对象
District district2=listd.get(i);
//创建第2行
XSSFRow nextrow=sheet.createRow(j);
//创建第1列并赋值
XSSFCell cess2 = nextrow.createCell(0);
cess2.setCellValue(district2.getId());
//创建第2列并赋值
XSSFCell cess3 = nextrow.createCell(1);
cess3.setCellValue(district2.getName());
j++;
} //创建一个文件
String path = contextPath +"/"+filename+".xlsx";
File file =new File(path);
try {
file.createNewFile();
//将excel内容存盘
FileOutputStream fos =FileUtils.openOutputStream(file);
workbook.write(fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
} return path;
} public static void main(String[] args) {
OutExcel oe=new OutExcel(); String path = oe.downloadGrade("D:", "district");
System.out.println(path);
}
}
这个导出,我是想JSP给我传勾选的每一行的信息给后端处理,然后按需导出。但页面JS那块不会处理

javaweb-Excel导入导出后台代码的更多相关文章
- 土制Excel导入导出及相关问题探讨
转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- Java Excel导入导出(实战)
一.批量导入(将excel文件转成list) 1. 前台代码逻辑 1)首先在html页面加入下面的代码(可以忽略界面的样式) <label for="uploadFile" ...
- JAVA Excel导入导出
--------------------------------------------方式一(新)-------------------------------------------------- ...
- 如何自动化你的Excel导入导出(Java)?
GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- Excel导入导出的业务进化场景及组件化的设计方案(上)
1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...
- 关于Excel导入导出的用例设计
目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...
随机推荐
- log_output参数是指定日志的存储方式
log_output='FILE'表示将日志存入文件,默认值是'FILE' log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中. mys ...
- (原创)c++11改进我们的程序之垃圾回收
c#和java中有自动垃圾回收机制,.net运行时和java虚拟机可以管理分配的堆内存,在对象失去引用时自动回收,因此在c#和jva中, 内存管理不是大问题.c++语言没有垃圾回收机制,必须自己去释放 ...
- MyBean - 单实例插件改进和VCL插件的改进
BeanFactory中添加VclOwners:TComponent属性, 在getBean创建VCL插件的时候,Tcomponent.Create(VclOwners) 这样在清理DLL时就会释 ...
- DIOCP开源项目-DIOCP3的重生和稳定版本发布
DIOCP3的重生 从开始写DIOCP到现在已经有一年多的时间了,最近两个月以来一直有个想法做个 30 * 24 稳定的企业服务端架构,让程序员专注于逻辑实现就好.虽然DIOCP到现在通讯层已经很稳定 ...
- ZooKeeper示例 分布式锁
[转载请注明作者和原文链接, 如有谬误, 欢迎在评论中指正. ] 场景描述 在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程 ...
- 【嵌入式】FS2410非操作系统外围资源测试
在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测 ...
- 【线程】linux之多线程同步互斥技术
1.同步机制 线程同步机制主要有:互斥量/信号量/条件变量/读写锁等. 2.技术示例 创建2个计数线程A和B,每次计数加1,当为偶数时,A线程计数:当为奇数时,B线程计数. 源码: ...
- kafka配置参数详解【收藏】
3.1 Broker Configs 基本配置如下: -broker.id -log.dirs -zookeeper.connect Topic-level配置以及其默认值将在下面讨论. ...
- pyspark实现自动提示以及代码高亮
pyspark实现自动提示以及代码高亮 起因 打开pyspark发现啥提示都没有,太不友好了啊,然后忍不住谷歌了一下,发现了这篇文章,内容如下: 1.pip install ptpython; 2.e ...
- JAVA开发的23种设计模式之 --- 桥接模式
桥接模式 概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构. 应用场景 实现系统可能有多 ...