* @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<String> csvContent(InputStream inputStream) {
List<String> 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<String> xlsContent(InputStream inputStream) {
List<String> allString = new ArrayList<String>();
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;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
/**
-
@description:
-
@author: alan
-
@time: 2020/9/27 18:01
*/
public class DownloadFileUtil {
/**
* 下载文件
*
* @param response
* @param request
* @param filePath 文件地址
* @throws Exception
*/
public static void downloadFile(HttpServletResponse response, HttpServletRequest request, String filePath) {
try {
//获取文件
File file = new File(filePath);
String fileName = file.getName();
response.reset();
ServletOutputStream out = response.getOutputStream();
request.setCharacterEncoding("UTF-8");
int BUFFER = 1024 * 10;
byte data[] = new byte[BUFFER];
BufferedInputStream bis = null;
//获取文件输入流
InputStream inputStream = new BufferedInputStream(new FileInputStream(filePath));
// 以流的形式下载文件。
DataInputStream fis = new DataInputStream(inputStream);
int read;
bis = new BufferedInputStream(fis, BUFFER);
response.setContentType("application/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
while ((read = bis.read(data)) != -1) {
out.write(data, 0, read);
}
fis.close();
bis.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
File file = new File(filePath);
//删除临时文件
if (file.exists()) {
file.delete();
}
}
}
}
[](https://gitee.com/vip204888/java-p7)运行结果
=======================================================================
调用导出,直接调用浏览器下载

导出的文件

导入刚刚导出的文件
### 最后
俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!
> **好啦,由于文章篇幅限制,面试题答案详解我就不在这里展示出来了,[如果你需要这份完整版的面试题答案详解资料点击这里免费领取](https://gitee.com/vip204888/java-p7)**
另外,给大家安排了一波学习面试资料:


f85a0b7a924b7eb3476876f83c7fec.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM1MzA4Mw==,size_16,color_FFFFFF,t_70)
导入刚刚导出的文件
### 最后
俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!
> **好啦,由于文章篇幅限制,面试题答案详解我就不在这里展示出来了,[如果你需要这份完整版的面试题答案详解资料点击这里免费领取](https://gitee.com/vip204888/java-p7)**
另外,给大家安排了一波学习面试资料:
[外链图片转存中...(img-ZT58jZ5B-1628093608609)]
[外链图片转存中...(img-Wy6ktXFq-1628093608611)]
以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!