// 合并单元格:参数:起始行, 终止行, 起始列, 终止列
CellRangeAddress cra = new CellRangeAddress(rowIndex, rowIndex, 0, k);
sheet.addMergedRegion(cra);
//注意:边框样式需要重新设置一下
RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, cra, sheet, wb);
//合并的单元格样式
HSSFCellStyle boderStyle = wb.createCellStyle();
//垂直居中
boderStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//水平居中
boderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

导出模板

实现代码

response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Cache-Control", "no-cache");// 定义导出的excel名字String excelName = "专题分析报表";try {@SuppressWarnings("resource")HSSFWorkbook wb = new HSSFWorkbook();// 工作簿HSSFSheet sheet = wb.createSheet("专题分析");HSSFRow row = null;int columnIndex = 0;int rowIndex = 0;ThemeAnalyseReportResp themeAnalyseReport = themeAnalysisService.getThemeAnalyseReportRecord(req);// 总数Long total = themeAnalyseReport.getTotal();// 管道数据AnalyseReportData pipeLineData = themeAnalyseReport.getPipeLineData();// 雨河数据AnalyseReportData rainRiverData = themeAnalyseReport.getRainRiverData();// 雨污数据AnalyseReportData rainSewageData = themeAnalyseReport.getRainSewageData();Long pipeTotal = pipeLineData.getPipeTotal();Long rainSewageTotal = rainSewageData.getPipeTotal();Long rainRiverTotal = rainRiverData.getPipeTotal();// 时间范围Date startTime = req.getStartTime();Date endTime = req.getEndTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");String startTimeFormat = sdf.format(startTime);String endTimeFormat = sdf.format(endTime);String timeStr = startTimeFormat + "-" + endTimeFormat;// 创建所有行数// 标题、名称所占行数 至少一行if (total != 0) {Long n = 0l;if (pipeTotal == 0) {n++;}if (rainSewageTotal == 0) {n++;}if (rainRiverTotal == 0) {n++;}// 导出行数为最大值if (total > 65535) {total = 65530l;}for (int m = 0; m < total + n; m++) {row = sheet.createRow(m);}} else {for (int m = 0; m < 5; m++) {row = sheet.createRow(m);}}// 合并单元格后居中HSSFCellStyle cellStyle = wb.createCellStyle();// 垂直居中cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置边框// 表格标题// HSSFRow row0 = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);HSSFCell cell = row.createCell(0);// 加载单元格样式// cell.setCellStyle(headStyle);cell.setCellValue("智水系统/专题分析报表");cell.setCellStyle(cellStyle);// 定义表头rowIndex++;row = sheet.createRow(rowIndex);row.setHeight((short) (22.50 * 20));// 设置行高columnIndex = 0;String str0 = "专题分析名称";row.createCell(columnIndex).setCellValue("专题分析名称");row.createCell(++columnIndex).setCellValue("报表周期");row.createCell(++columnIndex).setCellValue("总数");row.createCell(++columnIndex).setCellValue("数据名称");row.createCell(++columnIndex).setCellValue("总发生次数");row.createCell(++columnIndex).setCellValue("站点名称");row.createCell(++columnIndex).setCellValue("发生次数");row.createCell(++columnIndex).setCellValue("相关性站点");row.createCell(++columnIndex).setCellValue("日期");// 设置列宽int length = str0.getBytes().length;sheet.setColumnWidth(0, (short) (length * 256));sheet.setColumnWidth(1, (short) (length * 256));sheet.setColumnWidth(2, (short) (length * 128));sheet.setColumnWidth(3, (short) (length * 256));sheet.setColumnWidth(4, (short) (length * 128));sheet.setColumnWidth(5, (short) (length * 256));sheet.setColumnWidth(6, (short) (length * 128));sheet.setColumnWidth(7, (short) (length * 256));sheet.setColumnWidth(8, (short) (length * 256));// 单元格合并 起始行,结束行,起始列,结束列// 标题CellRangeAddress callRangeAddress0 = new CellRangeAddress(0, 0, 0, 8);sheet.addMergedRegion(callRangeAddress0);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress0,// sheet, wb);// 第三行数据rowIndex++;// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);if (total.intValue() > 0) {// 专题分析名称CellRangeAddress callRangeAddress = new CellRangeAddress(rowIndex, total.intValue() + rowIndex - 1, 0,0);sheet.addMergedRegion(callRangeAddress);// 重新设置边框样式RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress, sheet, wb);// 报表周期CellRangeAddress callRangeAddress1 = new CellRangeAddress(rowIndex, total.intValue() + rowIndex - 1, 1,1);sheet.addMergedRegion(callRangeAddress1);// 重新设置边框样式RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress1, sheet, wb);// 总数CellRangeAddress callRangeAddress2 = new CellRangeAddress(rowIndex, total.intValue() + rowIndex - 1, 2,2);sheet.addMergedRegion(callRangeAddress2);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress2,// sheet, wb);} else {// 专题分析名称CellRangeAddress callRangeAddress = new CellRangeAddress(2, 4, 0, 0);sheet.addMergedRegion(callRangeAddress);// 重新设置边框样式RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress, sheet, wb);// 报表周期CellRangeAddress callRangeAddress1 = new CellRangeAddress(2, 4, 1, 1);sheet.addMergedRegion(callRangeAddress1);// 重新设置边框样式RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress1, sheet, wb);// 总数CellRangeAddress callRangeAddress2 = new CellRangeAddress(2, 4, 2, 2);sheet.addMergedRegion(callRangeAddress2);}columnIndex = 0;cell = row.createCell(columnIndex);cell.setCellValue("专题分析报表概览");cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(timeStr);cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(total);cell.setCellStyle(cellStyle);// 表格数据填充// 雨污if (rainSewageData != null) {if (rainSewageTotal.intValue() > 0) { // 合并单元格行// 雨污相关性CellRangeAddress callRangeAddress3 = new CellRangeAddress(rowIndex,rainSewageTotal.intValue() + rowIndex - 1, 3, 3);sheet.addMergedRegion(callRangeAddress3);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress3,// sheet, wb);// 数目CellRangeAddress callRangeAddress4 = new CellRangeAddress(rowIndex,rainSewageTotal.intValue() + rowIndex - 1, 4, 4);sheet.addMergedRegion(callRangeAddress4);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress4,// sheet, wb);}columnIndex = 3;cell = row.createCell(columnIndex);cell.setCellValue("雨污相关性");cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(rainSewageTotal.intValue());cell.setCellStyle(cellStyle);if (rainSewageTotal.intValue() > 0) {// 4列后List<AnalyseMsgListVo> analyseData = rainSewageData.getAnalyseData();if (analyseData != null && analyseData.size() > 0) {for (int i = 0; i < analyseData.size(); i++) {AnalyseMsgListVo analyseMsgListVo = analyseData.get(i);String stationName = analyseMsgListVo.getStationName();List<AnalyseRecordVo> resMsg = analyseMsgListVo.getResMsg();// 站点名称 大于1的情况if (resMsg != null && resMsg.size() > 0) {// 合并 单元格// 站点名称 包含开始点 应该+1if (i != 0) {rowIndex = rowIndex + 1;}row = sheet.getRow(rowIndex);columnIndex = 5;if (stationName == null) {stationName = "";}cell = row.createCell(columnIndex);cell.setCellValue(stationName);cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(resMsg.size());cell.setCellStyle(cellStyle);if (resMsg.size() > 1) {CellRangeAddress callRangeAddress5 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 5, 5);sheet.addMergedRegion(callRangeAddress5);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress5,// sheet,// wb);// 次数CellRangeAddress callRangeAddress6 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 6, 6);sheet.addMergedRegion(callRangeAddress6);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress6,// sheet,// wb);}/*** 两种情况 1 三大类 第一个站点的 第一个相关性 站点 2 其他站点的*/for (int j = 0; j < resMsg.size(); j++) {// 除开第一个站点的第一个时间 其余都新增行数if (j != 0) {rowIndex++;}// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);if (row == null) {row = sheet.createRow(rowIndex);}AnalyseRecordVo analyseRecordVo = resMsg.get(j);String stationName2 = analyseRecordVo.getStationName();if (stationName2 == null) {stationName2 = "";}String date = analyseRecordVo.getDate();if (date == null) {date = "";}columnIndex = 7;// 相关站点row.createCell(columnIndex).setCellValue(stationName2);// 日期row.createCell(++columnIndex).setCellValue(date);if (rowIndex >= total) {break;}}}}}}}// 雨河if (rainRiverData != null) {// 雨污河连通第一行rowIndex++;// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);// 合并单元格行if (rainRiverTotal.intValue() > 0) {// 雨污河连通CellRangeAddress callRangeAddress3 = new CellRangeAddress(rowIndex,rainRiverTotal.intValue() + rowIndex - 1, 3, 3);sheet.addMergedRegion(callRangeAddress3);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress3,// sheet, wb);// 数目CellRangeAddress callRangeAddress4 = new CellRangeAddress(rowIndex,rainRiverTotal.intValue() + rowIndex - 1, 4, 4);sheet.addMergedRegion(callRangeAddress4);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress4,// sheet, wb);}columnIndex = 3;cell = row.createCell(columnIndex);cell.setCellValue("雨污河连通");cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(rainRiverTotal.intValue());cell.setCellStyle(cellStyle);if (rainRiverTotal.intValue() > 0) {// 4列后List<AnalyseMsgListVo> analyseData = rainRiverData.getAnalyseData();if (analyseData != null && analyseData.size() > 0) {for (int i = 0; i < analyseData.size(); i++) {AnalyseMsgListVo analyseMsgListVo = analyseData.get(i);String stationName = analyseMsgListVo.getStationName();List<AnalyseRecordVo> resMsg = analyseMsgListVo.getResMsg();// 站点名称 大于1的情况if (resMsg != null && resMsg.size() > 0) {// 合并 单元格// 站点名称 包含开始点 应该+1if (i != 0) {rowIndex = rowIndex + 1;}if (resMsg.size() > 1) {CellRangeAddress callRangeAddress5 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 5, 5);sheet.addMergedRegion(callRangeAddress5);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress5,// sheet,// wb);// 次数CellRangeAddress callRangeAddress6 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 6, 6);sheet.addMergedRegion(callRangeAddress6);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress6,// sheet,// wb);}if (stationName == null) {stationName = "";}row = sheet.getRow(rowIndex);columnIndex = 5;// 站点cell = row.createCell(columnIndex);cell.setCellValue(stationName);cell.setCellStyle(cellStyle);// 次数cell = row.createCell(++columnIndex);cell.setCellValue(resMsg.size());cell.setCellStyle(cellStyle);for (int j = 0; j < resMsg.size(); j++) {if (j != 0) {rowIndex++;}// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);AnalyseRecordVo analyseRecordVo = resMsg.get(j);String stationName2 = analyseRecordVo.getStationName();if (stationName2 == null) {stationName2 = "";}String date = analyseRecordVo.getDate();if (date == null) {date = "";}columnIndex = 7;// 相关站点row.createCell(columnIndex).setCellValue(stationName2);// 日期row.createCell(++columnIndex).setCellValue(date);if (rowIndex >= total) {break;}}}}}}}// 管道if (pipeLineData != null) {// 管道堵塞风险第一行rowIndex++;// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);// 大于最大值if (total >= 65530) {// 合并单元格行// 雨污河连通CellRangeAddress callRangeAddress3 = new CellRangeAddress(rowIndex, 65530, 3, 3);sheet.addMergedRegion(callRangeAddress3);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress3,// sheet, wb);// 数目CellRangeAddress callRangeAddress4 = new CellRangeAddress(rowIndex, 65530, 4, 4);sheet.addMergedRegion(callRangeAddress4);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress4,// sheet, wb);} else {if (pipeTotal.intValue() > 0) {// 合并单元格行// 雨污河连通CellRangeAddress callRangeAddress3 = new CellRangeAddress(rowIndex,pipeTotal.intValue() + rowIndex - 1, 3, 3);sheet.addMergedRegion(callRangeAddress3);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress3,// sheet, wb);// 数目CellRangeAddress callRangeAddress4 = new CellRangeAddress(rowIndex,pipeTotal.intValue() + rowIndex - 1, 4, 4);sheet.addMergedRegion(callRangeAddress4);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress4,// sheet, wb);}}columnIndex = 3;cell = row.createCell(columnIndex);cell.setCellValue("管道堵塞风险");cell.setCellStyle(cellStyle);cell = row.createCell(++columnIndex);cell.setCellValue(pipeTotal.intValue());cell.setCellStyle(cellStyle);if (pipeTotal.intValue() > 0) {// 4列后List<AnalyseMsgListVo> analyseData = pipeLineData.getAnalyseData();if (analyseData != null && analyseData.size() > 0) {for (int i = 0; i < analyseData.size(); i++) {AnalyseMsgListVo analyseMsgListVo = analyseData.get(i);String stationName = analyseMsgListVo.getStationName();List<AnalyseRecordVo> resMsg = analyseMsgListVo.getResMsg();// 站点名称 大于1的情况if (resMsg != null && resMsg.size() > 0) {// 合并 单元格// 站点名称 包含开始点 应该+1if (i != 0) {rowIndex = rowIndex + 1;}if (resMsg.size() + rowIndex < 65530) {if (resMsg.size() > 1) {CellRangeAddress callRangeAddress5 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 5, 5);sheet.addMergedRegion(callRangeAddress5);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress5,// sheet, wb);// 次数CellRangeAddress callRangeAddress6 = new CellRangeAddress(rowIndex,resMsg.size() + rowIndex - 1, 6, 6);sheet.addMergedRegion(callRangeAddress6);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress6,// sheet, wb);}} else {if (rowIndex < 65530) {CellRangeAddress callRangeAddress5 = new CellRangeAddress(rowIndex, 65530, 5,5);sheet.addMergedRegion(callRangeAddress5);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress5,// sheet, wb);// 次数CellRangeAddress callRangeAddress6 = new CellRangeAddress(rowIndex, 65530, 6,6);sheet.addMergedRegion(callRangeAddress6);// 重新设置边框样式// RegionUtil.setBorderTop(HSSFBorderFormatting.BORDER_THICK, callRangeAddress6,// sheet, wb);} else {break;}}if (stationName == null) {stationName = "";}columnIndex = 5;row = sheet.getRow(rowIndex);// 站点cell = row.createCell(columnIndex);cell.setCellValue(stationName);cell.setCellStyle(cellStyle);// 次数cell = row.createCell(++columnIndex);cell.setCellValue(resMsg.size());cell.setCellStyle(cellStyle);for (int j = 0; j < resMsg.size(); j++) {if (j != 0) {rowIndex++;}// row = sheet.createRow(rowIndex);row = sheet.getRow(rowIndex);if (row == null) {row = sheet.createRow(rowIndex);}AnalyseRecordVo analyseRecordVo = resMsg.get(j);String stationName2 = analyseRecordVo.getStationName();if (stationName2 == null) {stationName2 = "";}String date = analyseRecordVo.getDate();if (date == null) {date = "";}columnIndex = 7;// 相关站点row.createCell(columnIndex).setCellValue(stationName2);// 日期row.createCell(++columnIndex).setCellValue(date);// System.out.println(row.toString());if (rowIndex >= total) {break;}}}}}}}sheet.setDefaultRowHeight((short) (16.5 * 20));// 列宽自适应 有中文不适用// for (int i = 0; i <= 7; i++) {// sheet.autoSizeColumn(i);// }String title = "czjl_all";response.setHeader("Content-disposition", "attachment;fileName=" + title + ".xls");response.setContentType("application/octet-stream;charset=utf-8");OutputStream ouputStream = response.getOutputStream();wb.write(ouputStream);ouputStream.flush();ouputStream.close();} catch (Exception e) {e.printStackTrace();}

前端实现

export function exportExcelOrder(data) {return request2({url: 'http://192.168.2.50:8888/v2/export/exportExcelOrder',method: 'POST',data,responseType: 'blob' // 表明返回的数据类型})
}workOrderExcel(){exportExcelOrder().then(()=>{const blob = new Blob([res])const fileName = '工单数据.xls'const elink = document.createElement('a')elink.download = fileNameelink.style.display = 'none'elink.href = URL.createObjectURL(blob)document.body.appendChild(elink)elink.click()URL.revokeObjectURL(elink.href) // 释放URL 对象document.body.removeChild(elink)})},

POI-HSSFWorkbook合并单元格及文字居中问题相关推荐

  1. 用Xlsx xlsx-style 导出excel表格,附带合并单元格,文字居中,文字颜色字体大小等样式 (复制即可实现)

    提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一.用Xlsx xlsx-style 导出excel表格 二.使用步骤 1.安装插件 2.引入 总结 前 ...

  2. Latex合并单元格并文字居中

    目录 问题描述 问题解决 问题描述 latex合并单元格(分为合并行和合并列两种情况)之后,如何使文字居中显示. 问题解决 \begin{table}[!h] \small \centering \c ...

  3. POI获取合并单元格的值

    POI获取合并单元格时,如果是遍历获取合并单元格的所有子单元格的值,office的excel都会有值,wps的excel只会第一个子单元格有值,其他子单元格都没值,即cell=null.故意凡是获取合 ...

  4. poi读取合并单元格

    poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...

  5. Apache POI读合并单元格

    转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/77193464,建议读者阅读原文,确保获得完整的信息 场景 ...

  6. php td居中显示文字,【html】合并单元格,并居中显示文本

    现状: 想要实现的效果: 代码实现: 用例失败为0,无测试详情 知识点: 合并单元格 rowspan是合并行,colspan 是合并列 456 实例: 1 2 3 456 效果: 2.单元格内容居中: ...

  7. JXL导出EXCEL合并单元格、文字对齐方式 .

    public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> ala ...

  8. JXL导出EXCEL合并单元格、文字对齐方式

    这次能做出来,主要是感谢各位在网上提供的资料,在此记录 导出的结果是,大家看哈,若有可取之处可继续 代码比较多,大家主要看哈我用红色标注部分即可 --------------------------- ...

  9. java POI 实现合并单元格

    合并单元格所使用的方法: sheet.addMergedRegion( CellRangeAddress  cellRangeAddress  ); CellRangeAddress  对象的构造方法 ...

最新文章

  1. matlab nt什么意思,胎儿nt是什么意思
  2. appium python框架结构,GitHub - wyybingo/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
  3. J2EE学习笔记三:EJB基础概念和知识 收藏
  4. php 接口的定义与实现,PHP接口定义与用法示例
  5. 《幸福资本论》读书笔记
  6. 解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”(转贴)...
  7. ios NSString 正则表达式 其它字符
  8. JavaSE各阶段练习题----集合-Collection-Set-List
  9. hadoop中如何控制map的数量
  10. 深度学习修炼(三)——自动求导机制
  11. 谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)
  12. InnoDB原理篇:Change Buffer是如何提升索引性能的?
  13. gm怎么刷东西 rust_RUST:2020年7月第三周 修补和更新
  14. Web前端开发必学15大技术
  15. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)
  16. []TLD code run
  17. go语言练习:条件语句和循环语句
  18. nginx 文件服务器_Nginx必不可少啊!!!
  19. 信号检测与估计理论_校对招募 | 信号检测论的贝叶斯估计
  20. 【Linux初始化init系统】

热门文章

  1. 用户查询意图检测(CIKM Competition数据挖掘竞赛夺冠算法陈运文)
  2. 游泳圈图标icon教程
  3. 生活中有哪些应用了物联网卡
  4. 基于STM32单片机的K型热电偶测温(Proteus仿真+程序)
  5. 贝壳采集器:西江传媒网 数据采集
  6. 中国大学MOOC-翁恺-C语言程序设计PAT习题集(第二章)
  7. (未时学术)谷歌学术(Google Scholar)使用方法小全书
  8. 提升实景三维建模效率?这个问题不能忽视
  9. Cerebal Cortex 基于弥散核磁共振成像的个体化皮层分区
  10. 去掉Input文本框的边框