*/

public interface ExcelService {

void export(HttpServletResponse response, HttpServletRequest request);

List importExcel(String type, InputStream inputStream);

}

接口实现类

package com.mycompany.myapp.service.test.impl;

import com.mycompany.myapp.service.test.ExcelService;

import com.mycompany.myapp.util.DownloadFileUtil;

import com.mycompany.myapp.util.JxlUtil;

import com.mycompany.myapp.web.rest.vm.LoginVM;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

/**

  • @description:

  • @author: alan

  • @time: 2021/7/25 21:38

*/

public class ExcelJxlServiceImpl implements ExcelService {

/**

  • 导出excel

*/

@Override

public void export(HttpServletResponse response, HttpServletRequest request) {

// 文件新名

String newFileName = “UserInfo.xls”;

String pathName = “D:/usr/” + newFileName;

String title[] = {“账号”, “密码”, “登记”};

LoginVM loginOne = new LoginVM();

loginOne.setUsername(“小米”);

loginOne.setPassword(“123”);

loginOne.setRememberMe(true);

LoginVM loginTwo = new LoginVM();

loginTwo.setUsername(“小明”);

loginTwo.setPassword(“123”);

loginTwo.setRememberMe(false);

List list = new ArrayList<>(

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

);

list.add(loginOne);

list.add(loginTwo);

//文件保存在指定位置

JxlUtil.exportExcel(pathName, title, list);

//获取文件流返回给客户端

DownloadFileUtil.downloadFile(response, request, pathName);

}

/**

  • 导入

  • @param type

  • @param inputStream

  • @return

*/

@Override

public List importExcel(String type, InputStream inputStream) {

List list = new ArrayList();

if (type.equals(“xls”)) {

list = JxlUtil.xlsContent(inputStream);

} else {

list = JxlUtil.csvContent(inputStream);

}

return list;

}

}

jxl工具类

package com.mycompany.myapp.util;

import jxl.Sheet;

import jxl.Workbook;

import jxl.format.Alignment;

import jxl.format.Border;

import jxl.format.BorderLineStyle;

import jxl.format.VerticalAlignment;

import jxl.read.biff.BiffException;

import jxl.write.*;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.*;

import java.lang.reflect.Field;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.util.ArrayList;

import java.util.List;

/**

  • @description:

  • @author: alan

  • @time: 2021/7/23 18:26

*/

public class JxlUtil {

/**

  • 导出Excel

  • @param fileName 文件地址名称

  • @param Title 导出excel的标题

  • @param listContent 导出的list

  • @return

*/

public final static boolean exportExcel(String fileName, String[] Title, List<?> listContent) {

final Logger logger = LoggerFactory.getLogger(JxlUtil.class);

WritableWorkbook workbook = null;

// 以下开始输出到EXCEL

try {

String filePathName = fileName.substring(0,fileName.lastIndexOf("/"));

File f = new File(filePathName);

if(!f.exists()){

f.mkdirs();//创建目录

}

// 创建可写入的Excel工作簿

File file = new File(fileName);

if (!file.exists()) {

boolean bool = file.createNewFile();

logger.info(“创建Excel工作簿结果”,bool);

}

/** 创建工作簿** */

workbook = Workbook.createWorkbook(file);

/** 创建工作表** */

WritableSheet sheet = workbook.createSheet(“Sheet1”, 0);

/** 设置纵横打印(默认为纵打)、打印纸******* */

jxl.SheetSettings sheetset = sheet.getSettings();

sheetset.setProtected(false);

/** 设置单元格字体** */

WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);

WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);

/** 以下设置三种单元格样式,灵活备用 */

// 用于标题居中

WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);

wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条

wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐

wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐

wcf_center.setWrap(false); // 文字是否换行

// 用于正文居左

WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);

wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条

wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐

wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐

wcf_left.setWrap(false); // 文字是否换行

/** 以下是EXCEL开头大标题,暂时省略****** */

// sheet.mergeCells(0, 0, colWidth, 0);

// sheet.addCell(new Label(0, 0, “XX报表”, wcf_center));

/** 以下是EXCEL第一行列标题****** */

for (int i = 0; i < Title.length; i++) {

sheet.addCell(new Label(i, 0, Title[i], wcf_center));

}

/** 以下是EXCEL正文数据****** */

Field[] fields = null;

int i = 1;

for (Object obj : listContent) {

fields = obj.getClass().getDeclaredFields();

int j = 0;

for (Field v : fields) {

v.setAccessible(true);

Object va = v.get(obj);

if (va == null) {

va = “”;

}

if (va.getClass().getSimpleName().equals(“Double”)) {

sheet.addCell(new Label(j, i, BigDecimal.valueOf((Double) va) + “”, wcf_left));

} else if (va.getClass().getSimpleName().equals(“Float”)) {

Double vDouble = ((Float) va).doubleValue();

sheet.addCell(new Label(j, i, new BigDecimal(new DecimalFormat("#.00").format(vDouble)) + “”,

wcf_left));

} else {

sheet.addCell(new Label(j, i, va.toString() + “”, wcf_left));

}

j++;

}

i++;

}

/** **将以上缓存中的内容写到EXCEL文件中 */

workbook.write();

} catch (Throwable t) {

logger.error(“系统提示:Excel文件导出失败,原因:”,t.getMessage());

t.printStackTrace();

}finally {

try {

/** 关闭文件**** */

workbook.close();

}catch (Exception e){

logger.error(“系统提示:关闭文件失败,原因:”,e.getMessage());

}

}

return true;

}

/**

  • 获取CSV文件中的内容

  • @param inputStream

  • @return

*/

public static List csvContent(InputStream inputStream) {

List allString = new ArrayList<>();

if (inputStream != null) {

InputStreamReader inputStreamReader;

BufferedReader br = null;

//FileInputStream fins = new FileInputStream(csv);

try {

inputStreamReader = new InputStreamReader(inputStream, “GBK”);

br = new BufferedReader(inputStreamReader);

String line = “”;

String everyLine = “”;

while ((line = br.readLine()) != null) { // 读取到的内容给line变量

everyLine = line + " ,";

allString.add(everyLine);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

br.close();

}catch (Exception e){

e.printStackTrace();

}

}

}

return allString;

}

/**

  • 获取xls文件中的内容

  • @param inputStream

  • @return

*/

public static List xlsContent(InputStream inputStream) {

List allString = new ArrayList();

try {

// 创建输入流,读取Excel

//InputStream is = new FileInputStream(xls.getAbsolutePath());

// jxl提供的Workbook类

Workbook wb = Workbook.getWorkbook(inputStream);

// Excel的页签数量

int sheet_size = wb.getNumberOfSheets();

for (int index = 0; index < sheet_size; index++) {

// 每个页签创建一个Sheet对象

Sheet sheet = wb.getSheet(index);

// sheet.getRows()返回该页的总行数

for (int i = 0; i < sheet.getRows(); i++) {

// sheet.getColumns()返回该页的总列数

StringBuffer sb = new StringBuffer();

for (int j = 0; j < sheet.getColumns(); j++) {

String cellinfo = sheet.getCell(j, i).getContents();

sb.append(cellinfo + “;”);

}

allString.add(sb.toString().substring(0, sb.length() - 1));

}

}

} catch (Exception e) {

e.printStackTrace();

}

return allString;

}

}

下载工具类

package com.mycompany.myapp.util;

java实现excel导入导出(jxl),Java面试题及解析相关推荐

  1. java实现excel导入导出,对象图片读取,上传七牛云

    java实现excel导入导出以及解决方案 因为公司业务需求,要完成针对表格的导入导出,excel这里使用MultipartFile类接收 ,下面是部分关键代码,希望有所帮助 //获取excel文件的 ...

  2. Java POI Excel导入导出

    Java POI Excel导入导出 1.maven引入依赖 2.导入Excel 3.导出Excel 1.maven引入依赖 <!-- POI Excel 操作 --> <depen ...

  3. Java实现Excel导入导出操作详解

    前言 本次封装是基于 POI 的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求. 1. 功能测试 1.1 测试准备 在做测试前,我们需要將[2. 环境准备]中的 ...

  4. java实现excel导入导出(jxl),Java入门你值得拥有

    private ExcelService excelService = new ExcelJxlServiceImpl(); @Autowired private ObjectMapper objec ...

  5. Java操作Excel导入导出(EasyExcel)

    在管理一个系统时,总会有许多的数据,为了方便浏览查看数据,系统总会提供「导出Excel」的功能:有导出就有导入,在要向数据库中插入大量的数据时,我们向程序提供准备好的 Excel,然后程序读取表格内容 ...

  6. java开发excel导入导出工具类基于EasyExcel

    一.工具类 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchCo ...

  7. Java实现Excel导入导出操作

    java 对excel的导入及导出 最近在做对excel的导入导出,在平常的工作中,导入导出excel数据是常见的需求,今天就简单的记录一下Java是如何来实现这个功能的,感兴趣或者正好大家在工作中遇 ...

  8. Java实现Excel导入导出

    1.Excel导入 总结一下目标,就是要将excel中的数据行.逐一提取,最后得到一个list,这个list的每个元素就是excel的每个数据行的实例,之后的操作就是常规的java逻辑处理了. 可以把 ...

  9. JAVA实现Excel导入/导出 以及excel样式设置

    POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-200408 ...

最新文章

  1. 使用Cbrgen和Setdest构造无线仿真环境
  2. centos7重新加载服务的命令_Centos7 常用防火墙操作命令
  3. 判断字符串中是否为数字的三种方法
  4. MyBatis中in的使用
  5. 《C++ Primer 5th》笔记(3 / 19):字符串、向量、迭代器和数组
  6. 任务分发系统-Qcmd-http详解
  7. 判断IMEI或MEID是否合法
  8. 基于JAVA+SpringMVC+MYSQL的在线英语精品课程视频教学平台
  9. pap与chap协议
  10. 第五课--使用定时器实现中断(1)
  11. bagging boosting 随机森林 GBDT对比
  12. Docker安装phpmyadmin
  13. 应用出海之--AdMob
  14. 蝴蝶曲线python_蝴组词有哪些?除了蝴蝶还可以组什么?蝴字的基本字义
  15. CSDN博文周刊第一期 | 2018年总结:向死而生,为爱而活——忆编程青椒的戎马岁月
  16. 网站被黑中毒WebShell木马的解决方案
  17. 清华大学计算机学院曹伦郗,四川文理第一名填报北大 高分“学霸”们最后选了啥专业...
  18. 20个令人疯狂的投资事实
  19. 多频外差法(三频四步相移)
  20. VS2010 C# WinForm学习视频

热门文章

  1. rabbitMQ在linux上安装教程和问题解决
  2. Fuchsia OS 现已支持第二代 Nest Hub
  3. android应用更新升级
  4. MATLAB电动空调模型/压缩机制冷空调模型/压缩机等空调系统cad二维图
  5. Google Play关键词排名优化
  6. 微营销:数字世界的第二张面孔
  7. 通过label标记实现单选框点击文字也能选中
  8. 数据仓库之【用户行为数仓】11:【dws层:数据汇总层】【appc层:数据应用层】需求4:每日启动App次数相关指标
  9. Xilinx FPGA 引脚功能详细介绍
  10. ddwin32diskimager软碟通Ultraiso 简单分析区别和长处