springmvc實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)信息為excle表格示例代碼
1.項(xiàng)目增加導(dǎo)出日志信息
2.項(xiàng)目中導(dǎo)入poi-*.jar等操作excel文件的jar文件
- poi-3.7-20120326.jar
- poi-excelant-3.7-20101029.jar
- poi-ooxml-3.7.jar
- poi-ooxml-schemas-3.7.jar
Excel導(dǎo)出就是根據(jù)前臺(tái)條件將參數(shù)傳到controller,根據(jù)參數(shù)去數(shù)據(jù)庫(kù)中進(jìn)行查詢,查詢出list集合,將list集合生成excle數(shù)據(jù)下載。
代碼片段:
Contorller.Java
/**
* 導(dǎo)出信息
* @param model
*/
@RequestMapping("exportCustomer.do")
@SystemControllerLog(description = "數(shù)據(jù)庫(kù)表單導(dǎo)出Excle")
public void exportCustomer(ModelMap model) {
//TODO 如需添加條件
//model.addAttribute("username", nameStr);
//獲取需要導(dǎo)出的數(shù)據(jù)List
List<CMcustomer> cusList=customerService.exportCustomer(model);
//使用方法生成excle模板樣式
HSSFWorkbook workbook = customerService.createExcel(cusList, request);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 定義文件名格式
try {
//定義excle名稱 ISO-8859-1防止名稱亂碼
String msg = new String(
("客戶信息_" + format.format(new Date()) + ".xls").getBytes(),
"ISO-8859-1");
// 以導(dǎo)出時(shí)間作為文件名
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename="
+ msg);
workbook.write(response.getOutputStream());
} catch (IOException e) {
logger.error(e);
}
}
2.Service中createExcel方法
public HSSFWorkbook createExcel(List<CMcustomer> cusList,
HttpServletRequest request) {
// 創(chuàng)建一個(gè)webbook,對(duì)應(yīng)一個(gè)excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 在webbook中添加一個(gè)sheet,對(duì)應(yīng)excel文件中的sheet
HSSFSheet sheet = workbook.createSheet("客戶信息表");
// 設(shè)置列寬
sheet.setColumnWidth(0, 25 * 100);
sheet.setColumnWidth(1, 35 * 100);
sheet.setColumnWidth(2, 35 * 100);
sheet.setColumnWidth(3, 40 * 100);
sheet.setColumnWidth(4, 45 * 100);
sheet.setColumnWidth(5, 45 * 100);
sheet.setColumnWidth(6, 50 * 100);
sheet.setColumnWidth(7, 80 * 100);
sheet.setColumnWidth(8, 35 * 100);
sheet.setColumnWidth(9, 40 * 100);
// 在sheet中添加表頭第0行
HSSFRow row = sheet.createRow(0);
// 創(chuàng)建單元格,并設(shè)置表頭,設(shè)置表頭居中
HSSFCellStyle style = workbook.createCellStyle();
// 創(chuàng)建一個(gè)居中格式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 帶邊框
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
// 生成一個(gè)字體
HSSFFont font = workbook.createFont();
// 字體增粗
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 字體大小
font.setFontHeightInPoints((short) 12);
// 把字體應(yīng)用到當(dāng)前的樣式
style.setFont(font);
// 單獨(dú)設(shè)置整列居中或居左
HSSFCellStyle style1 = workbook.createCellStyle();
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFCellStyle style2 = workbook.createCellStyle();
style2.setAlignment(HSSFCellStyle.ALIGN_LEFT);
HSSFCellStyle style3 = workbook.createCellStyle();
style3.setAlignment(HSSFCellStyle.ALIGN_LEFT);
HSSFFont hssfFont = workbook.createFont();
hssfFont.setColor(HSSFFont.COLOR_RED);
hssfFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style3.setFont(hssfFont);
HSSFCellStyle style4 = workbook.createCellStyle();
style4.setAlignment(HSSFCellStyle.ALIGN_LEFT);
HSSFFont hssfFont1 = workbook.createFont();
hssfFont1.setColor(HSSFFont.COLOR_NORMAL);
hssfFont1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style4.setFont(hssfFont1);
HSSFCell cell = row.createCell(0);
cell.setCellValue("序號(hào)");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("客戶姓名");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("性別");
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue("狀態(tài)");
cell.setCellStyle(style);
cell = row.createCell(4);
cell.setCellValue("電話");
cell.setCellStyle(style);
cell = row.createCell(5);
cell.setCellValue("郵箱");
cell.setCellStyle(style);
cell = row.createCell(6);
cell.setCellValue("地址");
cell.setCellStyle(style);
for (int i = 0; i < cusList.size(); i++) {
String logTypeDis = "";
row = sheet.createRow(i + 1);
CMcustomer cMcustomer = cusList.get(i);
// 創(chuàng)建單元格,并設(shè)置值
// 編號(hào)列居左
HSSFCell c1 = row.createCell(0);
c1.setCellStyle(style2);
c1.setCellValue(i);
HSSFCell c2 = row.createCell(1);
c2.setCellStyle(style1);
c2.setCellValue(cMcustomer.getCustomername());//客戶姓名
String sexStr = cMcustomer.getSex();//性別 0:女,1:男
String sex="";
if ("1".equals(sexStr)) {
sex="男";
}
if ("0".equals(sexStr)) {
sex="女";
}
HSSFCell c3 = row.createCell(2);//性別
c3.setCellStyle(style1);
c3.setCellValue(sex);
String statusStr = cMcustomer.getStatus();//客戶狀態(tài)1.在職,2.離職
String status="";
if ("1".equals(statusStr)) {
status="在職";
}
if ("2".equals(statusStr)) {
status="離職";
}
HSSFCell c4 = row.createCell(3);//狀態(tài)
c4.setCellStyle(style1);
c4.setCellValue(status);
String customerid = cMcustomer.getCustomerid();//客戶id
List<CMphone> phoneList = cMphoneMapper.selectByCustomerid(customerid);
String phone="";
if (phoneList!=null&&phoneList.size()>0) {
for (int j = 0; j < phoneList.size(); j++) {
phone = phoneList.get(j).getPhone();
}
}
HSSFCell c5 = row.createCell(4);//電話
c5.setCellStyle(style1);
c5.setCellValue(phone);
List<CMemail> emailList = cMemailMapper.selectAll(customerid);
String email="";
if (emailList!=null&&emailList.size()>0) {
for (int j = 0; j < emailList.size(); j++) {
email = emailList.get(j).getEmail();
}
}
HSSFCell c6 = row.createCell(5);//郵箱
c6.setCellStyle(style1);
c6.setCellValue(email);
CMaddress cMaddress=new CMaddress();
cMaddress.setCustomerid(customerid);
List<CMaddress> adderssList = cMaddressMapper.selectAll(cMaddress);
String adderss="";
if (adderssList!=null&&adderssList.size()>0) {
for (int j = 0; j < adderssList.size(); j++) {
adderss = adderssList.get(j).getAddress();
}
}
HSSFCell c7 = row.createCell(6);//地址
c7.setCellStyle(style1);
c7.setCellValue(adderss);
//使用默認(rèn)格式
row.createCell(1).setCellValue(cMcustomer.getCustomername());
row.createCell(2).setCellValue(sex);
row.createCell(3).setCellValue(status);
row.createCell(4).setCellValue(phone);
row.createCell(5).setCellValue(email);
row.createCell(6).setCellValue(adderss);
}
return workbook;
}
3.頁(yè)面jsp調(diào)用
//導(dǎo)出信息
function exporBtn(){
$.ajax({
type:"POST",
url:"<%=path%>/customer/exportCustomer.do",
success:function(data){
window.open('<%=path%>/customer/exportCustomer.do');
}
});
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java Math類的三個(gè)方法ceil,floor,round用法
這篇文章主要介紹了Java Math類的三個(gè)方法ceil,floor,round用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
關(guān)于ThreadLocal對(duì)request和response的用法說(shuō)明
這篇文章主要介紹了關(guān)于ThreadLocal對(duì)request和response的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
關(guān)于Mybatis的mapper接口函數(shù)重載問(wèn)題
這篇文章主要介紹了關(guān)于Mybatis的mapper接口函數(shù)重載問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
RocketMQ中消費(fèi)者的消費(fèi)進(jìn)度管理
這篇文章主要介紹了RocketMQ中消費(fèi)者的消費(fèi)進(jìn)度管理,業(yè)務(wù)實(shí)現(xiàn)消費(fèi)回調(diào)的時(shí)候,當(dāng)且僅當(dāng)此回調(diào)函數(shù)返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS ,RocketMQ才會(huì)認(rèn)為這批消息(默認(rèn)是1條)是消費(fèi)完成的,需要的朋友可以參考下2023-10-10
Java判斷一個(gè)字符串是不是一個(gè)數(shù)字的解決思路
這篇文章主要給大家介紹了關(guān)于Java判斷一個(gè)字符串是不是一個(gè)數(shù)字的解決思路,判斷一個(gè)字符串是否為數(shù)字是Java開發(fā)中很常見的業(yè)務(wù)需求,實(shí)現(xiàn)這個(gè)判斷有很多種方式,需要的朋友可以參考下2023-08-08
JAVA如何獲取jvm和操作系統(tǒng)相關(guān)信息
這篇文章主要介紹了JAVA獲取jvm和操作系統(tǒng)相關(guān)信息,使用Java自帶的類進(jìn)行獲取系統(tǒng)運(yùn)行的相關(guān)信息,在這整理記錄分享一下,需要的朋友可以參考下2022-10-10
SpringBoot集成Druid連接池連接MySQL8.0.11
這篇博客簡(jiǎn)單介紹spring boot集成druid連接池的簡(jiǎn)單配置和注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07

