我是靠谱客的博主 辛勤小蝴蝶,最近开发中收集的这篇文章主要介绍后端代码实现Excel文件生成,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

引入依赖包

<!--
start 打印文件,文件生成-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!--
end 打印文件,文件生成-->
 //订单文件生成
private DownLoadDto ordersXLS(OrdersDto ordersDto) {
boolean flag = true;
String name = null;
try {
//设置输出到本地的excel文件的名字和路径
name = "F:\" + ordersDto.getUserName() + "-" + ordersDto.getOrdersNumber() + ".xls";
FileOutputStream out = new FileOutputStream(name);
//生成excel文档对象
HSSFWorkbook workBook = new HSSFWorkbook();
//创建工作簿
HSSFSheet mySheet = workBook.createSheet();
//设置工作簿的名字
workBook.setSheetName(0, "我的工作簿1");
//创建第一行,标题行
int rowNomber = -1;
HSSFRow myRow = mySheet.createRow(++rowNomber);
HSSFCellStyle style = workBook.createCellStyle();
//设置字体样式
HSSFFont font = workBook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10);
style.setFont(font);
//设置标题行,每一列的标题
HSSFCell cell = myRow.createCell((short) 0);
cell.setCellStyle(style);
cell.setCellValue("菜名");
cell = myRow.createCell((short) 1);
cell.setCellStyle(style);
cell.setCellValue("单价");
cell = myRow.createCell((short) 2);
cell.setCellStyle(style);
cell.setCellValue("数量");
cell = myRow.createCell((short) 3);
cell.setCellStyle(style);
cell.setCellValue("订单编号");
cell = myRow.createCell((short) 4);
cell.setCellStyle(style);
cell.setCellValue("用户id");
cell = myRow.createCell((short) 5);
cell.setCellStyle(style);
cell.setCellValue("用户姓名");
cell = myRow.createCell((short) 6);
cell.setCellStyle(style);
cell.setCellValue("订单总金额");
cell = myRow.createCell((short) 7);
cell.setCellStyle(style);
cell.setCellValue("评价信息");
cell = myRow.createCell((short) 8);
cell.setCellStyle(style);
cell.setCellValue("联系电话");
cell = myRow.createCell((short) 9);
cell.setCellStyle(style);
cell.setCellValue("备注");
cell = myRow.createCell((short) 10);
cell.setCellStyle(style);
cell.setCellValue("订单类型");
cell = myRow.createCell((short) 11);
cell.setCellStyle(style);
cell.setCellValue("下单时间");
if (ordersDto.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())) {
cell = myRow.createCell((short) 12);
cell.setCellValue("餐桌编号");
cell.setCellStyle(style);
cell = myRow.createCell((short) 13);
cell.setCellStyle(style);
cell.setCellValue("预定日期");
cell = myRow.createCell((short) 14);
cell.setCellStyle(style);
cell.setCellValue("预定开始时间");
cell = myRow.createCell((short) 15);
cell.setCellStyle(style);
cell.setCellValue("预定结束时间");
} else {
cell = myRow.createCell((short) 12);
cell.setCellStyle(style);
cell.setCellValue("送餐地址");
}
//自己造数据,将数据填充到excel中
for (int i = 1; i <= ordersDto.getOrdersEntryList().size(); i++) {
//创建行
HSSFRow Row = mySheet.createRow(++rowNomber);
//创建行中的列,并赋值
HSSFCell cellfirst = Row.createCell((short) 0);
cellfirst.setCellValue(ordersDto.getOrdersEntryList().get(i - 1).getDishName());
HSSFCell cell1 = Row.createCell((short) 1);
cell1.setCellValue(ordersDto.getOrdersEntryList().get(i - 1).getPrice().doubleValue());
HSSFCell cell2 = Row.createCell((short) 2);
cell2.setCellValue(ordersDto.getOrdersEntryList().get(i - 1).getCount());
if (i == 1) {
HSSFCell cell3 = Row.createCell((short) 3);
cell3.setCellValue(ordersDto.getOrdersNumber());
HSSFCell cellsecond = Row.createCell((short) 4);
cellsecond.setCellValue(ordersDto.getUserId());
HSSFCell cellthrid = Row.createCell((short) 5);
cellthrid.setCellValue(ordersDto.getUserName());
HSSFCell cellfour = Row.createCell((short) 6);
cellfour.setCellValue(ordersDto.getTotalPrice().doubleValue());
HSSFCell cellfive = Row.createCell((short) 7);
cellfive.setCellValue(ordersDto.getEvaluate());
HSSFCell cellsex = Row.createCell((short) 8);
cellsex.setCellValue(ordersDto.getPhoneNumber());
HSSFCell cellseven = Row.createCell((short) 9);
cellseven.setCellValue(ordersDto.getRemark());
HSSFCell celleight = Row.createCell((short) 10);
celleight.setCellValue(ordersDto.getOrdersType());
HSSFCell cellnine = Row.createCell((short) 11);
cellnine.setCellValue(ordersDto.getOrdersTime());
if (ordersDto.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())) {
HSSFCell cellten = Row.createCell((short) 12);
cellten.setCellValue(ordersDto.getOrdersTable());
HSSFCell celleleven = Row.createCell((short) 13);
celleleven.setCellValue(ordersDto.getReserveDate());
HSSFCell celltwelve = Row.createCell((short) 14);
celltwelve.setCellValue(ordersDto.getOrdersStartTime());
HSSFCell cellthirteen = Row.createCell((short) 15);
cellthirteen.setCellValue(ordersDto.getOrdersEndTime());
} else {
HSSFCell cellten = Row.createCell((short) 12);
cellten.setCellValue(ordersDto.getOrdersAddress());
}
} else {
HSSFCell cell3 = Row.createCell((short) 3);
cell3.setCellValue("");
HSSFCell cellsecond = Row.createCell((short) 4);
cellsecond.setCellValue("");
HSSFCell cellthrid = Row.createCell((short) 5);
cellthrid.setCellValue("");
HSSFCell cellfour = Row.createCell((short) 6);
cellfour.setCellValue("");
HSSFCell cellfive = Row.createCell((short) 7);
cellfive.setCellValue("");
HSSFCell cellsex = Row.createCell((short) 8);
cellsex.setCellValue("");
HSSFCell cellseven = Row.createCell((short) 9);
cellseven.setCellValue("");
HSSFCell celleight = Row.createCell((short) 10);
celleight.setCellValue("");
HSSFCell cellnine = Row.createCell((short) 11);
cellnine.setCellValue("");
if (ordersDto.getOrdersType().equals(OrdersTypeEnum.ORDERS_TYPE_ENTER.getText())) {
HSSFCell cellten = Row.createCell((short) 12);
cellten.setCellValue("");
HSSFCell celleleven = Row.createCell((short) 13);
celleleven.setCellValue("");
HSSFCell celltwelve = Row.createCell((short) 14);
celltwelve.setCellValue("");
HSSFCell cellthirteen = Row.createCell((short) 15);
cellthirteen.setCellValue("");
} else {
HSSFCell cellten = Row.createCell((short) 12);
cellten.setCellValue("");
}
}
}
//这里是设置文件的单元格宽度自适应。
mySheet.autoSizeColumn((short)0);
mySheet.autoSizeColumn((short)1);
mySheet.autoSizeColumn((short)2);
mySheet.autoSizeColumn((short)3);
mySheet.autoSizeColumn((short)4);
mySheet.autoSizeColumn((short)5);
mySheet.autoSizeColumn((short)6);
mySheet.autoSizeColumn((short)7);
mySheet.autoSizeColumn((short)8);
mySheet.autoSizeColumn((short)9);
mySheet.autoSizeColumn((short)10);
mySheet.autoSizeColumn((short)11);
mySheet.autoSizeColumn((short)12);
mySheet.autoSizeColumn((short)13);
mySheet.autoSizeColumn((short)14);
mySheet.autoSizeColumn((short)15);
//写文件到本地
workBook.write(out);
out.close();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}
DownLoadDto downLoadDto = new DownLoadDto();
downLoadDto.setFilePath(name);
downLoadDto.setFlag(flag);
return downLoadDto;
}

下载文件响应类DTO

//文件下载响应结果
@Data
public class DownLoadDto {
private String filePath;
private boolean flag;
}

上面的代码我是参考后,修改过的。
之前的网址找不到了,代码我留下来了。

import java.util.List;
import java.io.FileOutputStream;
import java.util.ArrayList;
import com.example.demo.po.ExcelUser;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class Excel {
public static void main(String[] args) {
try {
//设置输出到本地的excel文件的名字和路径
FileOutputStream out = new FileOutputStream("F:\订单.xls");
//生成excel文档对象
HSSFWorkbook workBook = new HSSFWorkbook();
//创建工作簿
HSSFSheet mySheet = workBook.createSheet();
//设置工作簿的名字
workBook.setSheetName(0, "我的工作簿1");
//创建第一行,标题行
int rowNomber = -1;
HSSFRow myRow = mySheet.createRow(++rowNomber);
HSSFCellStyle style = workBook.createCellStyle();
//设置字体样式
HSSFFont font = workBook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10);
style.setFont(font);
//设置标题行,每一列的标题
HSSFCell cell = myRow.createCell((short) 0);
cell.setCellStyle(style);
cell.setCellValue("姓名");
cell = myRow.createCell((short) 1);
cell.setCellStyle(style);
cell.setCellValue("性别");
cell = myRow.createCell((short) 2);
cell.setCellStyle(style);
cell.setCellValue("爱好");
//自己造数据,将数据填充到excel中
List<ExcelUser> list = new Excel().getUsers();
System.out.println("===" + list.size());
for (int i = 1; i <= list.size(); i++) {
//创建行
HSSFRow Row = mySheet.createRow(++rowNomber);
ExcelUser user = list.get(i - 1);
//创建行中的列,并赋值
HSSFCell cellfirst = Row.createCell((short) 0);
cellfirst.setCellValue(user.getName());
HSSFCell cellsecond = Row.createCell((short) 1);
cellsecond.setCellValue(user.getSex());
HSSFCell cellthrid = Row.createCell((short) 2);
cellthrid.setCellValue(user.getHobby());
}
System.out.println("===1" + rowNomber);
//写文件到本地
workBook.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public List<ExcelUser> getUsers() {
List<ExcelUser> users = new ArrayList<ExcelUser>();
ExcelUser u = new ExcelUser();
u.setHobby("登山");
u.setName("Lisa");
u.setSex("女");
ExcelUser u1 = new ExcelUser();
u1.setHobby("游泳");
u1.setName("Tom");
u1.setSex("男");
ExcelUser u2 = new ExcelUser();
u2.setHobby("看电影");
u2.setName("Harry");
u2.setSex("男");
ExcelUser u3 = new ExcelUser();
u3.setHobby("看电影");
u3.setName("Tina");
u3.setSex("男");
ExcelUser u4 = new ExcelUser();
u4.setHobby("跑步");
u4.setName("obla");
u4.setSex("男");
users.add(u);
users.add(u1);
users.add(u2);
users.add(u3);
users.add(u4);
return users;
}
}

最后

以上就是辛勤小蝴蝶为你收集整理的后端代码实现Excel文件生成的全部内容,希望文章能够帮你解决后端代码实现Excel文件生成所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部