前言:

导入导出后台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导入导出后台代码的更多相关文章

  1. 土制Excel导入导出及相关问题探讨

    转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...

  2. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  3. Java Excel导入导出(实战)

    一.批量导入(将excel文件转成list) 1. 前台代码逻辑 1)首先在html页面加入下面的代码(可以忽略界面的样式) <label for="uploadFile" ...

  4. JAVA Excel导入导出

    --------------------------------------------方式一(新)-------------------------------------------------- ...

  5. 如何自动化你的Excel导入导出(Java)?

    GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...

  6. 利用反射实现通用的excel导入导出

    如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...

  7. Excel导入导出的业务进化场景及组件化的设计方案(上)

    1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...

  8. 关于Excel导入导出的用例设计

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

  9. ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码

    实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...

随机推荐

  1. python2和Python3异同总结

    1. python3 异常不再接收逗号(,)作为参数: ## python3 中这样可以正常运行 try: print("在这里执行的代码,有异常进入except") except ...

  2. OpenStack大规模部署详解

    https://blog.csdn.net/karamos/article/details/80130443 0.前言今年的2月22日,OpenStack发布了15个版本Ocata. 走过了7年的发展 ...

  3. [Windows Azure] Virtual Machine and Cloud Service Sizes for Windows Azure

    Virtual machine size CPU cores Memory OS disk space–cloud services OS disk space–virtual machines Ma ...

  4. 【驱动】linux系统下nand flash驱动程序框架

    linux操作系统下nand flash驱动框架 当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层 ...

  5. animate.css源码

    /*! 动画属性: animation-name:动画名称 animation-duration:动画时间 animation-timing-function:动画的速度曲线 animation-de ...

  6. JVM垃圾回收--年轻代、年老点和持久代

    关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象首先 ...

  7. NSLOOKUP命令的使用方法

    查询IP地址 nslookup最简单的用法是查询域名对应的IP地址,包括A记录.MX记录.NS记录CNAME记录. 查询A记录:nslookup 域名 查询MX记录:nslookup -q=mx 域名 ...

  8. LeetCode: Convert Sorted Array to Binary Search Tree 解题报告

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  9. django配置数据库

    配置数据库 Django默认使用SQLite数据库 在settings.py文件中通过DATABASES选项进行数据库配置 配置MySQL Python3.x中安装的是PyMySQL 在__init_ ...

  10. WideCharToMultiByte和MultiByteToWideChar函数的用法(转)

    转自:http://www.cnblogs.com/gakusei/articles/1585211.html 为了支持Unicode编码,需要多字节与宽字节之间的相互转换.这两个系统函数在使用时需要 ...