Java_导出Excel

导出的Excel标题、Sheet名称、数据内容都可以使用中文​


一、pom.xml引入jar包

1
2
3
4
5
< dependency >
             < groupId >org.apache.poi</ groupId >
             < artifactId >poi-ooxml</ artifactId >
             < version >3.13</ version >
         </ dependency >


二、Excel操作内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
 
public class ExportInternalUtil {
     private XSSFWorkbook wb = null ;
 
     private XSSFSheet sheet = null ;
 
     /**
      * @param wb
      * @param sheet
      */
     public ExportInternalUtil(XSSFWorkbook wb, XSSFSheet sheet) {
         this .wb = wb;
         this .sheet = sheet;
     }
 
     /**
      * 合并单元格后给合并后的单元格加边框
      *
      * @param region
      * @param cs
      */
     public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs) {
 
         int toprowNum = region.getFirstRow();
         for ( int i = toprowNum; i <= region.getLastRow(); i++) {
             XSSFRow row = sheet.getRow(i);
             for ( int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
                 XSSFCell cell = row.getCell(j); // XSSFCellUtil.getCell(row,
                                                 // (short) j);
                 cell.setCellStyle(cs);
             }
         }
     }
 
     /**
      * 设置表头的单元格样式
      *
      * @return
      */
     public XSSFCellStyle getHeadStyle() {
         // 创建单元格样式
         XSSFCellStyle cellStyle = wb.createCellStyle();
         // 设置单元格的背景颜色为淡蓝色
         cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
         cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
         // 设置单元格居中对齐
         cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
         // 设置单元格垂直居中对齐
         cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
         // 创建单元格内容显示不下时自动换行
         cellStyle.setWrapText( true );
         // 设置单元格字体样式
         XSSFFont font = wb.createFont();
         // 设置字体加粗
         font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
         font.setFontName( "宋体" );
         font.setFontHeight(( short ) 200 );
         cellStyle.setFont(font);
         // 设置单元格边框为细线条
         cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
         return cellStyle;
     }
 
     /**
      * 设置表体的单元格样式
      *
      * @return
      */
     public XSSFCellStyle getBodyStyle() {
         // 创建单元格样式
         XSSFCellStyle cellStyle = wb.createCellStyle();
         // 设置单元格居中对齐
         cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
         // 设置单元格垂直居中对齐
         cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
         // 创建单元格内容显示不下时自动换行
         cellStyle.setWrapText( true );
         // 设置单元格字体样式
         XSSFFont font = wb.createFont();
         // 设置字体加粗
         font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
         font.setFontName( "宋体" );
         font.setFontHeight(( short ) 200 );
         cellStyle.setFont(font);
         // 设置单元格边框为细线条
         cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
         cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
         return cellStyle;
     }
}


三、Excel操作类

       共外部调用,可设置Sheet名称、标题、数据等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.io.IOException;
import java.util.ArrayList;
 
import javax.servlet.ServletOutputStream;
 
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import com.james.domain.User;
 
public class ExportUtil {
 
     public static void ExportExcel(String[] titles, ArrayList<User> list, ServletOutputStream outputStream) {
         // 创建一个workbook 对应一个excel应用文件
         XSSFWorkbook workBook = new XSSFWorkbook();
         // 在workbook中添加一个sheet,对应Excel文件中的sheet
         //Sheet名称,可以自定义中文名称
         XSSFSheet sheet = workBook.createSheet( "Sheet1" );
         ExportInternalUtil exportUtil = new ExportInternalUtil(workBook, sheet);
         XSSFCellStyle headStyle = exportUtil.getHeadStyle();
         XSSFCellStyle bodyStyle = exportUtil.getBodyStyle();
         // 构建表头
         XSSFRow headRow = sheet.createRow( 0 );
         XSSFCell cell = null ;
 
         // 输出标题
         for ( int i = 0 ; i < titles.length; i++) {
             cell = headRow.createCell(i);
             cell.setCellStyle(headStyle);
             cell.setCellValue(titles[i]);
         }
         // 构建表体数据
         for ( int j = 0 ; j < list.size(); j++) {
             XSSFRow bodyRow = sheet.createRow(j + 1 );
             User user = list.get(j);
 
             cell = bodyRow.createCell( 0 );
             cell.setCellStyle(bodyStyle);
             cell.setCellValue(user.getLastIp());
 
             cell = bodyRow.createCell( 1 );
             cell.setCellStyle(bodyStyle);
             cell.setCellValue(user.getLastVisit());
 
             cell = bodyRow.createCell( 2 );
             cell.setCellStyle(bodyStyle);
             cell.setCellValue(user.getPassword());
             
             cell = bodyRow.createCell( 3 );
             cell.setCellStyle(bodyStyle);
             cell.setCellValue(user.getUserName());
             
             cell = bodyRow.createCell( 4 );
             cell.setCellStyle(bodyStyle);
             cell.setCellValue(user.getUserId());
         }
 
         try {
             workBook.write(outputStream);
             outputStream.flush();
             outputStream.close();
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             try {
                 outputStream.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }
}


四、SpringMVC Controller层调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@RequestMapping (value = "/excelDownload" )
     public String exportExcel(HttpServletResponse response) {
         try {
             //String fileName = new String(("导出excel标题").getBytes(), "UTF-8") + ".xlsx";
             String fileName= new String(( "导出excel标题" ).getBytes( "gb2312" ), "iso8859-1" )+ ".xlsx" ;
             response.setContentType( "application/vnd.ms-excel;charset=UTF-8" );
             response.setHeader( "Content-Disposition" , "attachment;filename=" + fileName);
             response.setCharacterEncoding( "utf-8" );
 
             // response.setHeader("Content-disposition", "attachment; filename="
             // + "exdddcel" + ".xlsx");// 组装附件名称和格式
 
             String[] titles = { "最后IP" , "最后访问时间" , "密码" , "用户名" , "用户编号" };
 
             /*SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String date = df.format(new Date());
             Date dateNow = null;
             try {
                 dateNow = df.parse(date);
             } catch (ParseException e) {
                 e.printStackTrace();
             }*/
             Date dateNow = new Date();
             
             ArrayList<User> users = new ArrayList<User>();
             User user = new User();
             user.setLastIp( "127.0.0.1" );
             user.setLastVisit(dateNow);
             user.setPassword( "123" );
             user.setUserId( 1 );
             user.setUserName( "名称:James" );
             users.add(user);
 
             user = new User();
             user.setLastIp( "192.0.0.1" );
             user.setLastVisit(dateNow);
             user.setPassword( "456" );
             user.setUserId( 2 );
             user.setUserName( "名称:Mary" );
             users.add(user);
 
             ServletOutputStream outputStream = response.getOutputStream();
             ExportUtil.ExportExcel(titles, users, outputStream);
         } catch (IOException e) {
             e.printStackTrace();
         }
         return null ;
     }


五、程序中用到的实体类User

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.io.Serializable;
import java.util.Date;
 
public class User implements Serializable {
     private int userId;
 
     private String userName;
 
     private String password;
 
     private String lastIp;
 
     private Date lastVisit;
 
     public int getUserId() {
         return userId;
     }
 
     public void setUserId( int userId) {
         this .userId = userId;
     }
 
     public String getUserName() {
         return userName;
     }
 
     public void setUserName(String userName) {
         this .userName = userName;
     }
 
     public String getPassword() {
         return password;
     }
 
     public void setPassword(String password) {
         this .password = password;
     }
 
     public String getLastIp() {
         return lastIp;
     }
 
     public void setLastIp(String lastIp) {
         this .lastIp = lastIp;
     }
 
     public Date getLastVisit() {
         return lastVisit;
     }
 
     public void setLastVisit(Date lastVisit) {
         this .lastVisit = lastVisit;
     }
}


六、异常情况

1、标题乱码(注释代码会出现标题乱码)

1
2
//String fileName = new String(("导出excel标题").getBytes(), "UTF-8") + ".xlsx";
             String fileName= new String(( "导出excel标题" ).getBytes( "gb2312" ), "iso8859-1" )+ ".xlsx" ;


七、参考文档

1、http://webook-java.iteye.com/blog/1699621

2、http://www.cnblogs.com/yjmyzz/p/4206463.html








转载于:https://www.cnblogs.com/gossip/p/5218029.html

AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题分类、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值