java poi导出excel,用excel 2013打开样式不能正常显示

我用的是poi3.02。用2010打开没问题,用2013打开只是合并单元格的地方,边框样式不能显示。

3个回答

升级jar包3.8就行了

poi设置的用07版的应该就可以

poi 针对03和07不同的版本会给出不同的类去处理的 你看看你的代码是 用 03还是 07 生成的 excel

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java poi导出excel文档 后台报下标越界 但文档正常导出且损坏

public static SXSSFWorkbook createCSVUtil2(int startRow, String sheetName, SXSSFWorkbook wb, Map<String, List<CellModel>> cellListMap, Integer cellRowNum, List<LinkedHashMap> exportData, int[] columnWidth, int totalcolumn, GgreportingtemplateDto ggreportingtemplateDto, int countRow) throws Exception { // 设置表格名称 SXSSFSheet sheet = (SXSSFSheet) wb.createSheet(sheetName); sheet.trackAllColumnsForAutoSizing(); // 设置表格标题 一般都是第一行第一个格子 // 标题样式 if (ggreportingtemplateDto.getTitle() != null) { XSSFCellStyle cellStyleTitle = (XSSFCellStyle) wb.createCellStyle(); cellStyleTitle.setWrapText(true); SXSSFRow rowTitle = (SXSSFRow) sheet.createRow(0); XSSFFont fontTitle = (XSSFFont) wb.createFont(); fontTitle.setFontHeightInPoints((short) 16); cellStyleTitle.setFont(fontTitle); // 合并标题单元格 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, totalcolumn - 1)); for (int i = 0; i < totalcolumn; i++) { if (i == 0) { SXSSFCell cell = (SXSSFCell) rowTitle.createCell(0); cell.setCellValue(ggreportingtemplateDto.getTitle()); cell.setCellStyle(cellStyleTitle); } else { SXSSFCell cell = (SXSSFCell) rowTitle.createCell(i); cell.setCellStyle(cellStyleTitle); } } } if (ggreportingtemplateDto.getCondition() != null) { // 设置筛选条件格子 一般是第二行第一列 // 条件样式 XSSFCellStyle cellStyleCondition = (XSSFCellStyle) wb.createCellStyle(); cellStyleCondition.setWrapText(true); SXSSFRow rowCondition = (SXSSFRow) sheet.createRow(1); XSSFFont fontCondition = (XSSFFont) wb.createFont(); fontCondition.setFontHeightInPoints((short) 16); cellStyleCondition.setFont(fontCondition); // 合并条件单元格 sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 4)); for (int i = 0; i < 4; i++) { if (i == 0) { SXSSFCell cell = (SXSSFCell) rowCondition.createCell(0); cell.setCellValue(ggreportingtemplateDto.getCondition()); cell.setCellStyle(cellStyleCondition); } else { SXSSFCell cell = (SXSSFCell) rowCondition.createCell(i); cell.setCellStyle(cellStyleCondition); } } } // 设置表格通用样式 XSSFCellStyle cellStyle = (XSSFCellStyle) wb.createCellStyle(); // 设置边框 // 设置单元格内容水平对齐 cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 设置单元格内容垂直对齐 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 设置自动换行 cellStyle.setWrapText(true); // 设置双边框 XSSFCellStyle cellStyleDouble = (XSSFCellStyle) wb.createCellStyle(); // 设置边框 // 设置单元格内容水平对齐 cellStyleDouble.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 设置单元格内容垂直对齐 cellStyleDouble.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 设置自动换行 cellStyleDouble.setWrapText(true); // 合并单元格 for (int t = 0; t < cellRowNum; t++) { SXSSFRow row = (SXSSFRow) sheet.createRow(t + startRow); List<CellModel> cellNameList = cellListMap.get(String.valueOf(t)); for (CellModel cellModel : cellNameList) { // 如果被合并的元素只占用了一个单元格则不进行合并 if (cellModel.getStartColumn() == cellModel.getEndColumn() && cellModel.getEndRow() == cellModel.getStartRow()) { continue; } sheet.addMergedRegion(new CellRangeAddress(cellModel.getStartRow(), cellModel.getEndRow(), cellModel.getStartColumn(), cellModel.getEndColumn())); } // create的cell Set<Integer> create = new HashSet<Integer>(); for (int i = 0; i < cellNameList.size(); i++) { CellModel cellModel = cellNameList.get(i); // 遍历插入表头 SXSSFCell cell = (SXSSFCell) row.createCell(cellModel.getStartColumn()); // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); // 设置行高 if (i == 1) { row.setHeight((short) 500); } cellStyle.setFont(font); cell.setCellValue(cellModel.getCellName()); cell.setCellStyle(cellStyle); create.add(cellModel.getStartColumn()); } // 把所有没有create的cell都create for (int i = 0; i < totalcolumn; i++) { if (!(create.contains(i))) { // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); cellStyle.setFont(font); SXSSFCell cell = (SXSSFCell) row.createCell(i); cell.setCellStyle(cellStyle); } } } for (LinkedHashMap hashMap : exportData) { SXSSFRow rowValue = (SXSSFRow) sheet.createRow(cellRowNum + startRow); Iterator<Map.Entry> iteratorRow = hashMap.entrySet().iterator(); while (iteratorRow.hasNext()) { Map.Entry entryRow = iteratorRow.next(); Integer key = Integer.valueOf(entryRow.getKey().toString()); String value = ""; if (entryRow.getValue() != null) { value = entryRow.getValue().toString(); } else { value = ""; } SXSSFCell cellValue = (SXSSFCell) rowValue.createCell(key - 1); // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); cellValue.setCellValue(value); cellStyle.setFont(font); cellValue.setCellStyle(cellStyle); } cellRowNum++; } // 设置备注栏 List<String> reMarkList = ggreportingtemplateDto.getRemake(); if (reMarkList != null) { for (int i = 0; i < reMarkList.size() + 1; i++) { int rowNum = i + startRow + cellRowNum + 1; XSSFCellStyle cellStyleRemake = (XSSFCellStyle) wb.createCellStyle(); SXSSFRow rowRemake = (SXSSFRow) sheet.createRow(rowNum); XSSFFont fontRemake = (XSSFFont) wb.createFont(); fontRemake.setFontHeightInPoints((short) 8); cellStyleRemake.setFont(fontRemake); String cellValue = "Notes:"; // 合并条件单元格 if (i != 0) { sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 4)); cellValue = reMarkList.get(i - 1); SXSSFCell cell = (SXSSFCell) rowRemake.createCell(0); cell.setCellValue(cellValue); cell.setCellStyle(cellStyleRemake); } else { SXSSFCell cell = (SXSSFCell) rowRemake.createCell(0); cell.setCellValue(cellValue); cell.setCellStyle(cellStyleRemake); } } } // 设置列宽 if (columnWidth != null) { for (int i = 0; i < columnWidth.length; i++) { sheet.setColumnWidth(i, columnWidth[i]); } } return wb; } 以上是我生成sheet表的内容 //exceptional Rpt public SXSSFWorkbook exceptionalRpt (GgreportingtemplateDto ggreportingtemplateDto, String startInputDate,String endInputDate) throws Exception { // 设置最大数据行数 SXSSFWorkbook wb = new SXSSFWorkbook(5050);//这里之前看到是说能设置这个表格最多能含有多少数据 Map<String, List<CellModel>> map = new HashMap<String, List<CellModel>>(); // 设置数据 // 第一级表头 List<CellModel> firstRow = new ArrayList<CellModel>(); CellModel cellModel1 = new CellModel(); // 总占用1行 Integer cellRow = 1; cellModel1.setCellName("Member English Name"); cellModel1.setStartRow(0); cellModel1.setEndRow(0); cellModel1.setStartColumn(0); cellModel1.setEndColumn(0); CellModel cellModel2 = new CellModel(); cellModel2.setCellName("Member Chinese Name"); cellModel2.setStartRow(0); cellModel2.setEndRow(0); cellModel2.setStartColumn(1); cellModel2.setEndColumn(1); CellModel cellModel3 = new CellModel(); cellModel3.setCellName("Staff No."); cellModel3.setStartRow(0); cellModel3.setEndRow(0); cellModel3.setStartColumn(2); cellModel3.setEndColumn(2); CellModel cellModel4 = new CellModel(); cellModel4.setCellName("HKID/Passport No."); cellModel4.setStartRow(0); cellModel4.setEndRow(0); cellModel4.setStartColumn(3); cellModel4.setEndColumn(3); CellModel cellModel5 = new CellModel(); cellModel5.setCellName("Sex"); cellModel5.setStartRow(0); cellModel5.setEndRow(0); cellModel5.setStartColumn(4); cellModel5.setEndColumn(4); CellModel cellModel6 = new CellModel(); cellModel6.setCellName("Plan Code"); cellModel6.setStartRow(0); cellModel6.setEndRow(0); cellModel6.setStartColumn(5); cellModel6.setEndColumn(5); CellModel cellModel7 = new CellModel(); cellModel7.setCellName("Plan Description"); cellModel7.setStartRow(0); cellModel7.setEndRow(0); cellModel7.setStartColumn(6); cellModel7.setEndColumn(6); CellModel cellModel8 = new CellModel(); cellModel8.setCellName("Effective Date"); cellModel8.setStartRow(0); cellModel8.setEndRow(0); cellModel8.setStartColumn(7); cellModel8.setEndColumn(7); CellModel cellModel9 = new CellModel(); cellModel9.setCellName("Status"); cellModel9.setStartRow(0); cellModel9.setEndRow(0); cellModel9.setStartColumn(8); cellModel9.setEndColumn(8); firstRow.add(cellModel1); firstRow.add(cellModel2); firstRow.add(cellModel3); firstRow.add(cellModel4); firstRow.add(cellModel5); firstRow.add(cellModel6); firstRow.add(cellModel7); firstRow.add(cellModel8); firstRow.add(cellModel9); map.put("0", firstRow); // 业务数据 List<LinkedHashMap> exportData = new ArrayList<LinkedHashMap>(); GuPolicyCopyItemMedgMembDto guPolicyCopyItemMedgMembDto = new GuPolicyCopyItemMedgMembDto(); List<GuPolicyCopyItemMedgMembDto> list = ServiceManager.prpall.getGuPolicyCopyItemMedgMembService().findALL(guPolicyCopyItemMedgMembDto, null);//这里查询出来是295条 //增加数据 用这端代码增加5000条数据 /*for (int i = 0; i < 5000; i++) { list.add((GuPolicyCopyItemMedgMembDto)list.get(0)); }*/ int countRow = 0; for (int i = 0; i < list.size(); i++) { GuPolicyCopyItemMedgMembDto data = (GuPolicyCopyItemMedgMembDto) list.get(i); LinkedHashMap<String,String> row = new LinkedHashMap<String,String>(); String struts = ""; String ename = ""; String cname = ""; String idno = ""; String staffno = ""; String sex = ""; String rationType = ""; String rationName = ""; String entryDate = ""; String chineseName = ""; String hKIDandPassportNo = ""; if(data.getFlag()==null||data.getFlag().equals("I")) { struts = "Add"; }else if(data.getFlag().equals("U")){ struts = "Amendment"; }else if(data.getFlag().equals("D")){ struts = "Deletion"; }else if(data.getFlag().equals("B")){ struts = "Cancellation"; } if(data.getClientEName() != null&&!(data.getClientEName().equals(""))) { ename = data.getClientEName(); } if(data.getClientCName() != null&&!(data.getClientCName().equals(""))) { cname = data.getClientCName(); } if(data.getIdNo() != null&&!(data.getIdNo().equals(""))) { idno = data.getIdNo(); } if(data.getStaffNo() != null&&!(data.getStaffNo().equals(""))) { staffno = data.getStaffNo(); } if(data.getSex() != null&&!(data.getSex().equals(""))) { sex = data.getSex(); } if(data.getRationType() != null&&!(data.getRationType().equals(""))) { rationType = data.getRationType(); } if(data.getRationName() != null&&!(data.getRationName().equals(""))) { rationName = data.getRationName(); } if(data.getEntryDate() != null) { entryDate = sim.format(data.getEntryDate()); } /*row.put("1", ""+ename+""); row.put("2", ""+cname+""); row.put("3", ""+staffno+""); row.put("4", ""+idno+""); row.put("5", ""+sex+""); row.put("6", ""+rationType+""); row.put("7", ""+rationName+""); row.put("8", ""+entryDate+""); row.put("9", ""+struts+"");*/ row.put("1", "1"); row.put("2", "2"); row.put("3", "3"); row.put("4", "4"); row.put("5", "5"); row.put("6", "6"); row.put("7", "7"); row.put("8", "8"); row.put("9", "9"); exportData.add(row); countRow++; } // 用于写入文件 // 列宽数组 int[] columnWidth = { 10000, 7500, 5000, 7500, 5000, 7500, 10000, 5000, 5000 }; // 报表标题 ggreportingtemplateDto.setTitle(null); List<String> remakeList = null; // 报表备注 ggreportingtemplateDto.setRemake(remakeList); ggreportingtemplateDto.setCondition(null); //数据分页 if(exportData.size()>5000) { double size = exportData.size(); double divisor = size/5000; int forNumber = (new Double(Math.ceil(divisor))).intValue(); for (int i = 0; i < forNumber; i++) { if((i+1)==forNumber) { List<LinkedHashMap> exportDataTemp = exportData.subList(0+(i*5000), exportData.size()-1); wb = this.createCSVUtil2(0, "Exceptional Rpt"+(i+1), wb, map, cellRow, exportDataTemp, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); }else { List<LinkedHashMap> exportDataTemp = exportData.subList(0+(i*5000), 5000+(i*5000 )); wb = this.createCSVUtil2(0, "Exceptional Rpt"+(i+1), wb, map, cellRow, exportDataTemp, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); } } }else { wb = this.createCSVUtil2(0, "Exceptional Rpt", wb, map, cellRow, exportData, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); } /*wb = this.createCSVUtil2(0, "Exceptional Rpt", wb, map, cellRow, exportData, columnWidth, columnWidth.length, ggreportingtemplateDto, 0);*/ return wb; } 一开始SXSSFWorkbook wb = new SXSSFWorkbook(5050)这里的值给的5000 ,然后当数据量大于5000时直接报错,文件不能正常导出,然后我把5000改成7000,会报错但是文件能导出,是损坏文件,一条数据都没有,后来修改成分页导出,自己测试的时候任然报了数组下标越界,且越界的下标为负值,文件能正常导出,但导出的文件显示已损坏,看不到数据。报错代码图片以上传,求大神解答,解答有效我微信转账请大神喝奶茶 java.lang.ArrayIndexOutOfBoundsException: -20527 at java.util.ArrayList.elementData(ArrayList.java:418) at java.util.ArrayList.get(ArrayList.java:431) at org.apache.poi.xssf.model.StylesTable.getFontAt(StylesTable.java:386) at org.apache.poi.xssf.usermodel.XSSFWorkbook.getFontAt(XSSFWorkbook.java:954) at org.apache.poi.xssf.streaming.SXSSFWorkbook.getFontAt(SXSSFWorkbook.java:857) at org.apache.poi.ss.util.SheetUtil.getCellWidth(SheetUtil.java:148) at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidth(AutoSizeColumnTracker.java:367) at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidths(AutoSizeColumnTracker.java:333) at org.apache.poi.xssf.streaming.SXSSFSheet.flushOneRow(SXSSFSheet.java:1892) at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1871) at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1882) at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:931) at com.sinosoft.application.platform.web.action.GgReportingTemplateAction.download(GgReportingTemplateAction.java:267) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sinosoft.application.common.BaseProcessAction.execute(BaseProcessAction.java:213) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:216) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:117) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.CAS_LANGUATE.doFilter(CAS_LANGUATE.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.sysframework.web.control.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.CompatibleFilter.doFilter(CompatibleFilter.java:29) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.ValidateSalt.doFilter(ValidateSalt.java:56) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:160) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.LoadSalt.doFilter(LoadSalt.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) 此问题已解决,导致报错的原因是sheet.trackAllColumnsForAutoSizing();poi自动设置列宽的代码,注释这行之后问题解决。

java poi excel导出 弹出框不出来!

下面是代码.所有代码都能执行完,没有报错,也不弹出保存窗口!求助... ``` /** * 导出 */ public void exportData(HttpServletResponse response) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = null; // 创建一行 HSSFRow row = null; HSSFCell cell = null; HSSFCellStyle stringstyle = null; HSSFCellStyle headStyle = null; headStyle = workbook.createCellStyle(); headStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); headStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); headStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); headStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); headStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex()); headStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); headStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); HSSFFont headfont = workbook.createFont(); // 设置头部字体为宋体 headfont.setFontName("宋体"); // 粗体 headfont.setBoldweight(Font.BOLDWEIGHT_BOLD); headfont.setFontHeightInPoints((short) 11); // 单元格样式使用字体 headStyle.setFont(headfont); HSSFFont datafont = workbook.createFont(); stringstyle = workbook.createCellStyle(); stringstyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); stringstyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); stringstyle.setBorderRight(XSSFCellStyle.BORDER_THIN); stringstyle.setBorderTop(XSSFCellStyle.BORDER_THIN); stringstyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 单元格样式使用字体 stringstyle.setFont(datafont); sheet = (HSSFSheet) workbook.createSheet(); sheet.setDefaultColumnWidth(16); //合并起始行,起始列,结束行,结束列 CellRangeAddress title1 = new CellRangeAddress(0, 0, 0, 10); sheet.addMergedRegion(title1); //设置第一行 row = (HSSFRow) sheet.createRow(0); cell = (HSSFCell) row.createCell(0); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("部室员工绩效合约考核汇总表"); cell.setCellStyle(headStyle); //合并起始行,起始列,结束行,结束列 // CellRangeAddress row1 = new CellRangeAddress(1, 0, 1, 1); // sheet.addMergedRegion(row1); //设置第二行 row = (HSSFRow) sheet.createRow(1); cell = (HSSFCell) row.createCell(0); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("项目"); cell.setCellStyle(headStyle); cell = (HSSFCell) row.createCell(1); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("员工1"); cell.setCellStyle(headStyle); cell = (HSSFCell) row.createCell(2); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("员工2"); cell.setCellStyle(headStyle); //合并起始行,起始列,结束行,结束列 // CellRangeAddress row2 = new CellRangeAddress(2, 0, 2, 1); // sheet.addMergedRegion(row2); //设置第三行 row = (HSSFRow) sheet.createRow(2); cell = (HSSFCell) row.createCell(0); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("一、主体指标"); cell.setCellStyle(headStyle); cell = (HSSFCell) row.createCell(1); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("111"); cell.setCellStyle(headStyle); cell = (HSSFCell) row.createCell(1); cell.setCellType(XSSFCell.CELL_TYPE_STRING); cell.setCellValue("222"); cell.setCellStyle(headStyle); ByteArrayOutputStream os = new ByteArrayOutputStream(); try { workbook.write(os); } catch (IOException e) { e.printStackTrace(); } byte[] content = os.toByteArray(); InputStream is = new ByteArrayInputStream(content); // 设置response参数,可以打开下载页面 response.reset(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(("季度绩效工资分配.xls").getBytes(), "iso-8859-1")); ServletOutputStream out = response.getOutputStream(); BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(is); bos = new BufferedOutputStream(out); byte[] buff = new byte[2048]; int bytesRead; // Simple read/write loop. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } bos.flush(); } catch (final IOException e) { throw e; } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); } } } ```

Java 使用POI导出excel表格,无法将单元格设置为文本格式

要把表格导出后,对id信息进行修改后再导回,修改过程中输入的都是数值类型的尝试使用两种方法设置单元格的文本格式后,任然单元格会在被双击后变成科学技术法。 使用的两种设置方式,第一种如下: // 生成一个(带标题)表格 HSSFSheet sheet = workbook.createSheet(); // 表数统计 int count = 1; // 生成一个表格 workbook.setSheetName(count - 1, sheetTitle + count); // 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); // 因为导出表格式不想要数字,保留原有编号,需要设置格式 HSSFDataFormat format = workbook.createDataFormat(); style.setDataFormat(format.getFormat("@")); 第二种: cell.setCellType(HSSFCell.CELL_TYPE_STRING); 在导出的表格中,单元格格式任然为常规 ![图片说明](https://img-ask.csdn.net/upload/201808/29/1535529917_824055.png)

poi导出Excel模板,并在其中一列写入数据

这列的字体与其他列的不一样,改成其他样式的,poi导出时将所有的字体都改成一样的了,有大神知道怎么写吗

java poi 分组查询导出Excel怎么实现

有个用户表(t_user) 有一个 用户订单记录表(dngdan) 其中有主外键关联,我想导出这种样式 用户姓名 订单号 张三 1 2 3.... 李四 1 2 3 这样的格式 怎么导出啊

java导出Excel使用的XSSF

java导出Excel怎么设置样式使用的是XSSF // 声明一个工作薄 XSSFWorkbook workbook = new XSSFWorkbook(); // 生成一个表格 XSSFSheet sheet = workbook.createSheet(fileName); // 设置表格默认列宽度为15个字节 sheet.setDefaultColumnWidth((short) 15);

java POI3.8 Excel 下载 发现不可读取内容 解决办法??

![图片说明](https://img-ask.csdn.net/upload/201701/17/1484635471_937430.png) ![图片说明](https://img-ask.csdn.net/upload/201701/17/1484635688_899413.png) ``` /** * 导出历史记录 */ @SuppressWarnings({ "deprecation", "unchecked" }) @RequestMapping("export-TrainHistoryRecord") @ResponseBody protected void buildExcelDocument(EmployeeTrainHistoryQuery query,ModelMap model, SXSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { //这里使用SXSSFWorkbook对象,支持1048576条数据 try { response.reset(); // 获得国际化语言 RequestContext requestContext = new RequestContext(request); String CourseCompany = requestContext .getMessage("manage-student-trainRecods"); response.setContentType("APPLICATION/vnd.ms-excel;charset=UTF-8"); // 注意,如果去掉下面一行代码中的attachment; 那么也会使IE自动打开文件。 response.setHeader( "Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode( DateUtil.getExportDate() + ".xlsx", "UTF-8"));//Excel 扩展名指定为xlsx SXSSFWorkbook对象只支持xlsx格式 OutputStream os = response.getOutputStream();// new CellStyle style = workbook.createCellStyle(); // 设置样式 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); String employeeCode = requestContext.getMessage("employeeCode"); String employeeName = requestContext.getMessage("employeeName"); String orgName = requestContext.getMessage("orgName"); String startDate = requestContext.getMessage("start.date"); String endDate = requestContext.getMessage("end.date"); String courseCode = requestContext.getMessage("courseCode"); String courseName = requestContext.getMessage("courseName"); String sessionName = requestContext.getMessage("sessionName"); String hoursNunber = requestContext.getMessage("hoursNunber"); // FileOutputStream(filePath); List<EmployeeTrainHistoryModel> list = null; query.setNeedQueryAll(true); try { // if("0".equals(query.getTrainFlag())){ query.setTotalItem(employeeTrainHistoryService.fetchCountEmployeeTrainHistoryByQuery(query)); int page_size = 100000;// 数据库中存储的数据行数 int list_count =query.getTotalItem(); int export_times = list_count % page_size > 0 ? list_count / page_size + 1 : list_count / page_size; for (int m = 0; m < export_times; m++) { query.setNeedQueryAll(false); query.setPageSize(100000);//每页显示多少条数据 query.setCurrentPage(m+1);//设置第几页 list=employeeTrainHistoryService.getEmployeeTrainHistoryByQuery(query); int len = list.size() < page_size ? list.size() : page_size; //新建sheet Sheet sheet = null; sheet = workbook.createSheet(System.currentTimeMillis() + CourseCompany+m); // for (int n = 0; n < len; n++) { // 迭代数据 if (list != null && list.size() > 0) { int rowNum = 1; int max_row=300000; int sheet_count=0; for (int i = 0; i < list.size(); i++) { EmployeeTrainHistoryModel history=list.get(i); //如果当前行超过单页签可容纳最大行则换页签 // if(i==0||i==(max_row*sheet_count+1)){ sheet.setDefaultColumnWidth((short) 17); // 创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个, Row header = sheet.createRow(0); // 第0行 // 产生标题列 Cell cell; String[] headerArr = new String[] { employeeCode, employeeName, orgName, startDate, endDate, courseCode, courseName, sessionName, hoursNunber }; for (int j = 0; j < headerArr.length; j++) { cell = header.createCell((short) j); cell.setCellStyle(style); cell.setCellValue(headerArr[j]); } Row row = sheet.createRow(rowNum++); row.createCell((short) 0).setCellValue( history.getEmployeeCode()); row.createCell((short) 1).setCellValue( history.getEmployeeName()); row.createCell((short) 2) .setCellValue(history.getOrgName()); if (history.getTrainBeginTime() != null) { row.createCell((short) 3).setCellValue( DateUtil.toString(history.getTrainBeginTime())); } else { row.createCell((short) 3).setCellValue(""); } if (history.getTrainEndTime() != null) { row.createCell((short) 4).setCellValue( DateUtil.toString(history.getTrainEndTime())); } else { row.createCell((short) 4).setCellValue(""); } row.createCell((short) 5).setCellValue( history.getCourseCode()); row.createCell((short) 6).setCellValue( history.getCourseName()); row.createCell((short) 7).setCellValue( history.getSessionName()); if (history.getHoursNumber() != null) row.createCell((short) 8).setCellValue( history.getHoursNumber().toString()); } } list.clear(); } } catch (Exception e) { e.printStackTrace(); } try { workbook.write(os); model.put("msg", "1"); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } ```

poi导出excel表数据量超过1000时候报异常,大神在哪啊。。

2016-06-28 14:35:57,294 ERROR [com.ultrapower.iam.server.action.resource.sysresource.SystemResAction] - exportSysRes 导出Excel异常 java.lang.ArrayIndexOutOfBoundsException: -32710 at java.util.ArrayList.get(ArrayList.java:323) at org.apache.poi.hssf.model.WorkbookRecordList.get(WorkbookRecordList.java:50) at org.apache.poi.hssf.model.Workbook.getExFormatAt(Workbook.java:787) at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:906) at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1727) at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1662) at com.ultrapower.iam.server.service.resource.sysresource.impl.SysResServiceImpl.creatResListExcel(SysResServiceImpl.java:5412) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy20.creatResListExcel(Unknown Source) at com.ultrapower.iam.server.action.resource.sysresource.SystemResAction.exportSysRes(SystemResAction.java:2622) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270) at com.ultrapower.iam.server.action.base.BaseAction.dispatchMethod(BaseAction.java:126) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.security.SecurityFilter.doFilter(SecurityFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.clientip.ClientIpFilter.doFilter(ClientIpFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.security.XSSSecurityFilter.doFilter(XSSSecurityFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.EncodingFilter.doFilter(EncodingFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ultrapower.ams.common.SessionCheckFilter.doFilter(SessionCheckFilter.java:184) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595)

java poi 解决 excel 条件格式筛选单元格问题

最近因项目需要我需要知道怎么用poi解析出是xlsx 的excel 用条件格式中规则而导致单元格有颜色的单元格 已经尝试过: 1. 单元格颜色筛选--- two.getCellStyle().getFillForegroundColor() 失败,全部为64 自动 2. 单元格填充模式筛选--- two.getCellStyle().getFillPattern() 失败,全部为0 3.单元格边框颜色筛选--- two.getCellStyle().getBottomBorderColor() 失败,全部为8 寻求帮助,谢谢。

java 使用POI导出大数据,服务器内存不释放

RT,我用java 使用POI导出大数据, 数据是可以导出来。但是服务器的内存一直不释放。导一次 内存就会增加100M-2G 视数据量大小。当超过JVM设置的15G时,服务就会瘫痪掉,无法访问、 主要代码如下, ``` MapList list = db.query(SQL); String EXCELNAME = (new StringBuilder(String.valueOf(unitId))).toString(); HSSFWorkbook workbook = new HSSFWorkbook(); //createSheet(excel工作表名) HSSFSheet sheet = workbook.createSheet(EXCELNAME); //下面是设置excel表中标题的样式 HSSFCellStyle title_style = workbook.createCellStyle(); title_style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); title_style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); title_style.setBorderBottom(HSSFCellStyle.BORDER_THIN); title_style.setBorderLeft(HSSFCellStyle.BORDER_THIN); title_style.setBorderRight(HSSFCellStyle.BORDER_THIN); title_style.setBorderTop(HSSFCellStyle.BORDER_THIN); title_style.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont title_font = workbook.createFont(); title_font.setColor(HSSFColor.VIOLET.index); title_font.setFontHeightInPoints((short) 12); title_font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); title_style.setFont(title_font); //内容的样式 HSSFCellStyle content_style = workbook.createCellStyle(); content_style.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index); content_style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); content_style.setBorderBottom(HSSFCellStyle.BORDER_THIN); content_style.setBorderLeft(HSSFCellStyle.BORDER_THIN); content_style.setBorderRight(HSSFCellStyle.BORDER_THIN); content_style.setBorderTop(HSSFCellStyle.BORDER_THIN); content_style.setAlignment(HSSFCellStyle.ALIGN_CENTER); content_style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); HSSFFont content_font = workbook.createFont(); content_font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); content_style.setFont(content_font); //填充标题内容 HSSFRow row = sheet.createRow(0); for (int i = 0; i < TITLES.length; i++) { //设置标题的宽度自适应 sheet.setColumnWidth(i, TITLES[i].getBytes().length * 2 * 256); HSSFCell cell = row.createCell(i); cell.setCellStyle(title_style); HSSFRichTextString text = new HSSFRichTextString(TITLES[i]); cell.setCellValue(text); } for (int i = 0; i < list.size(); i++) { row = sheet.createRow( i + 1); for( int val=0;val<TITLES.length;val++){ HSSFCell cell = row.createCell(val); cell.setCellStyle(content_style); HSSFRichTextString richString = new HSSFRichTextString(list.getRow(i).get(val)); cell.setCellValue(richString); } } response.reset(); response.setContentType("application/vnd.ms-excel ;charset=" + LocaleConfig.getEncoding()); response.setHeader("Content-disposition", "attachment;filename=" +EXCELNAME + ".xls"); response.addHeader("Cache-Control", "no-cache"); response.addHeader("Cache-Control", "no-store"); OutputStream ouputStream = response.getOutputStream(); try { workbook.write(ouputStream); } catch (Exception e) { e.printStackTrace(); }finally{ if(ouputStream!=null){ ouputStream.flush(); ouputStream.close(); } } } ```

poi导出excel怎么设置工作表标签的颜色

我想知道的不是单元格背景,也不是字体颜色,是sheet选项的颜色,求大神解答

Java使用POI模板导出,明细行超过模板行数,如何复制明细行格式进行增行

![](http://b.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=1134b2e5a0efce1bea7ec0cc9f61dfe6/0d338744ebf81a4cd0d41ddad02a6059252da63b.jpg) Java使用POI模板导出Excel,模板中现在的明细行是5行,现在数据超过5行,怎么复制明细行的格式进行增行

Java Excel模版导出怎么做?

RT:有一个5行的表头模版,现需要将数据导出到该模版。这个如何做? 答非所问 补充:我是有一个Excel模板(带样式的),现需要将数据追加到模板Excel文件里

java导出excel时数据如何自动生成透视图

java导出excel时数据如何自动生成透视图:向execl模板中添加数据,怎么自动生成透视图和雷达图?

小白求助:poi生成excel速度过慢问题,该怎么优化

package poiMain; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Scanner; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class PoiGH3215 { private static String fileName=""; public static String getCell(int x,int y) throws IOException{ DecimalFormat df = new DecimalFormat("#"); InputStream myxls=new FileInputStream(fileName); @SuppressWarnings("resource") XSSFWorkbook wb =new XSSFWorkbook(myxls); XSSFSheet sheet=wb.getSheetAt(0);//第一个工作表 XSSFRow row =sheet.getRow(x-1);//第x行 XSSFCell cell =row.getCell((short)y-1);//第x行第y个元素 if(cell==null){ return null; } String cellValue = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: cellValue = cell.getRichStringCellValue().getString().trim(); break; case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式 SimpleDateFormat sdf = null; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat .getBuiltinFormat("h:mm")) { sdf = new SimpleDateFormat("HH:mm"); } else {// 日期 sdf = new SimpleDateFormat("yyyy/MM/dd"); } Date date = cell.getDateCellValue(); cellValue = sdf.format(date); } else { cellValue = df.format(cell.getNumericCellValue()).toString(); } break; default: cellValue = ""; } return cellValue; } public static void ModelGH3215() throws IOException{ @SuppressWarnings("resource") XSSFWorkbook wb =new XSSFWorkbook(); Date d = new Date(); DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String fileName = df.format(d); FileOutputStream fileOut = new FileOutputStream("D:/输出/工行3215/" + fileName + "_main" + ".xls"); XSSFSheet sheet=wb.createSheet(); Font font = wb.createFont(); XSSFCellStyle style = wb.createCellStyle(); //新建单元格样式 font.setFontName("宋体"); font.setFontHeightInPoints((short) 12);//设置字体大小 font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直 style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM); //下边框 style.setFont(font); //设置单元格列宽 sheet.setColumnWidth(0, 100 * 100); sheet.setColumnWidth(1, 100 * 30); sheet.setColumnWidth(3, 100 * 30); sheet.setColumnWidth(4, 100 * 30); sheet.setColumnWidth(9, 100 * 130); sheet.setColumnWidth(20, 100 * 40); XSSFRow row =sheet.createRow((short)0); XSSFCell cell=row.createCell((short)0); row.setHeight((short) 700);//设置行高 cell.setCellValue("银行科目"); row.getCell((short)0).setCellStyle(style); row.createCell((short)1).setCellValue("币别"); row.getCell((short)1).setCellStyle(style); row.createCell((short)2).setCellValue("序列号"); row.getCell((short)2).setCellStyle(style); row.createCell((short)3).setCellValue("日期"); row.getCell((short)3).setCellStyle(style); row.createCell((short)4).setCellValue("业务日期"); row.getCell((short)4).setCellStyle(style); row.createCell((short)5).setCellValue("凭证字"); row.getCell((short)5).setCellStyle(style); row.createCell((short)6).setCellValue("凭证号"); row.getCell((short)6).setCellStyle(style); row.createCell((short)7).setCellValue("凭证年"); row.getCell((short)7).setCellStyle(style); row.createCell((short)8).setCellValue("凭证期间"); row.getCell((short)8).setCellStyle(style); row.createCell((short)9).setCellValue("摘要"); row.getCell((short)9).setCellStyle(style); row.createCell((short)10).setCellValue("对方科目"); row.getCell((short)10).setCellStyle(style); row.createCell((short)11).setCellValue("结算方式"); row.getCell((short)11).setCellStyle(style); row.createCell((short)12).setCellValue("结算号"); row.getCell((short)12).setCellStyle(style); row.createCell((short)13).setCellValue(""); row.getCell((short)13).setCellStyle(style); row.createCell((short)14).setCellValue(""); row.getCell((short)14).setCellStyle(style); row.createCell((short)15).setCellValue("汇率"); row.getCell((short)15).setCellStyle(style); row.createCell((short)16).setCellValue("附件数"); row.getCell((short)16).setCellStyle(style); row.createCell((short)17).setCellValue("汇率类型"); row.getCell((short)17).setCellStyle(style); row.createCell((short)18).setCellValue("备注"); row.getCell((short)18).setCellStyle(style); row.createCell((short)19).setCellValue("对应外币"); row.getCell((short)19).setCellStyle(style); row.createCell((short)20).setCellValue("对应外币金额"); row.getCell((short)20).setCellStyle(style); int j = 1;int sum=0;int a=0;int s=getNum(); ArrayList<String> date1 = new ArrayList(); ArrayList<Integer> value1 = new ArrayList(); ArrayList<String> date2 = new ArrayList(); ArrayList<Integer> value2 = new ArrayList(); for(int i=5;i<s+2;i++){ if(PoiGH3215.getCell(i,4).equals("转款")&&(PoiGH3215.getCell(i,8).equals("31001547840050012398"))){ System.out.println("get"); XSSFRow row2 =sheet.createRow((short)j++); row2.createCell((short)14).setCellValue(getCell(i,5)); row2.createCell((short)13).setCellValue(getCell(i,7)); row2.createCell((short)3).setCellValue(getCell(i,2));//日期 row2.createCell((short)4).setCellValue(getCell(i,2));//日期 row2.createCell((short)0).setCellValue("1021.01.10|工行广州白云路支行(8980)-备汇缴");//第一列 row2.createCell((short)9).setCellValue("收转款,建行怒江2398转入工行侨香");//摘要 }else if(PoiGH3215.getCell(i,4).equals("收付")&&(!PoiGH3215.getCell(i,5).equals(PoiGH3215.getCell(i,6)))){ XSSFRow row3 =sheet.createRow((short)j); row3.createCell((short)9).setCellValue("付移动手机充值款"); row3.createCell((short)13).setCellValue(getCell(i,7));//添加值 row3.createCell((short)14).setCellValue(getCell(i,5));//添加值 row3.createCell((short)3).setCellValue(getCell(j,2)); row3.createCell((short)4).setCellValue(getCell(j,2)); row3.createCell((short)0).setCellValue("1021.01.10|工行广州白云路支行(8980)-备汇缴"); row3.createCell((short)14).setCellValue(getCell(i,5)); row3.createCell((short)9).setCellValue("收还款退款");//摘要 } else if(PoiGH3215.getCell(i,4).equals("收付")&&(PoiGH3215.getCell(i,5).equals(PoiGH3215.getCell(i,6)))){ XSSFRow row3 =sheet.createRow((short)j); row3.createCell((short)9).setCellValue("付移动手机充值款"); row3.createCell((short)13).setCellValue(getCell(i,7)); row3.createCell((short)14).setCellValue(getCell(i,5));//添加值 row3.createCell((short)3).setCellValue(getCell(j,2)); row3.createCell((short)4).setCellValue(getCell(j,2)); row3.createCell((short)0).setCellValue("1021.01.10|工行广州白云路支行(8980)-备汇缴"); row3.createCell((short)14).setCellValue(getCell(i,5)); row3.createCell((short)9).setCellValue("收收付");//摘要 } else if(PoiGH3215.getCell(i,4).equals("拉卡拉代付款")&&(!PoiGH3215.getCell(i,9).equals("拉卡拉支付有限公司客户备付金"))&&(!PoiGH3215.getCell(i,9).equals("拉卡拉支付有限公司(客户备付金)"))&&(!PoiGH3215.getCell(i,9).equals("拉卡拉网络技术有限公司北京分公司的数(合计数)"))){ //System.out.println(i); date1.add(PoiGH3215.getCell(i,2)); value1.add(Integer.parseInt(PoiGH3215.getCell(i,5))); } } for(int c=0;c<date1.size();c++){ try { if(date1.get(c).equals(date1.get(c+1))){ a=value1.get(c); sum=a+sum; }else { a= value1.get(c); sum=a+sum; date2.add(date1.get(c)); value2.add(sum); sum=0; } } catch (Exception e) { a=value1.get(c); sum=a+sum; date2.add(date1.get(c)); value2.add(sum); } } for(int k=0;k<date2.size();k++){ XSSFRow row3 =sheet.createRow((short)j+k); row3.createCell((short)14).setCellValue(value2.get(k)); row3.createCell((short)9).setCellValue("付代付款"); row3.createCell((short)3).setCellValue(date2.get(k)); row3.createCell((short)4).setCellValue(date2.get(k)); row3.createCell((short)0).setCellValue("1021.01.10|工行广州白云路支行(8980)-备汇缴"); } for(int m=1;m<j+date2.size();m++){ XSSFRow row2 =sheet.getRow((short)m); row2.createCell((short)1).setCellValue("RMB|人民币"); row2.createCell((short)15).setCellValue("1"); row2.createCell((short)16).setCellValue("0"); row2.createCell((short)17).setCellValue("01|公司汇率"); row2.createCell((short)20).setCellValue("0"); } wb.write(fileOut); fileOut.close(); System.out.println("输入完毕"); } public static int getNum() throws IOException{ synchronized (fileName) { while("".equals(fileName)){ System.out.println("请输入您的文件路径:"); Scanner sc = new Scanner(System.in); fileName = sc.nextLine(); sc.close(); } } InputStream myxls=new FileInputStream(fileName); @SuppressWarnings("resource") XSSFWorkbook wb =new XSSFWorkbook(myxls); XSSFSheet sheet=wb.getSheetAt(0);//第一个工作表 return sheet.getLastRowNum(); } } 我要处理的表有6万多行,我这个处理一个200行的都要1分钟

java poi修改Excel单元格格式无效

// 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path)); HSSFCellStyle cellStyle =workbook.createCellStyle(); cellStyle.setFillBackgroundColor(HSSFColor.RED.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); ..................................... cell.setCellStyle(cellStyle); //读取excle文件, 校验单元格数据,如果格式不对。就需要修改单元格样式。

poi生成excel设置表格保护后,组合显示也被保护了,该怎么取消?

今天小弟碰到一个问题,望懂的大神帮忙看看,感激不尽: 我用poi生成excel时先设置了一个表格保护(sheet.protectSheet("123")),然 后有在表中生成过组合(sheet.groupRow(i+4,h+2);)这样的话这个生成的组合就用不了了,该怎么给这个组合按钮取消保护呢?![图片说明](https://img-ask.csdn.net/upload/201603/10/1457609978_639350.png)

java Excel导出 怎么设置某一列靠左对齐 其它靠右对齐啊?

java Excel导出 怎么设置某一列靠左对齐 其它靠右对齐啊?还要自动换行 "\r\n" 没用

关于POI锁定保护Excel表格后的操作

求代码高手指导,怎么用java写代码实现控制Excel锁定保护区域可以插入行列,而且插入的行列是没有锁定的,就是锁定区域的内容可以复制粘贴进新插入的行列里面! 求高手指导,我是利用的poi,谢谢!

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

NS网络模拟和协议仿真源代码

NS网络模拟和协议仿真源代码,包含代码说明及协议分析

简单的NS3网络模拟仿真(计算机网络作业)

简单的NS3网络模拟仿真,内附有PPT演示。论文评述。以及简单的安装教程。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

cuda开发cutilDLL

包括cutil32.dll、cutil32D.dll、cutil32.lib、cutil32D.lib,以及附带的glew32.lib/freeglut.lib

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Tensorflow与python3.7适配版本

tensorflow与python3.7匹配的最新库,更新了python3.7以后可以自行下载,或者去国外python的扩展包下载界面自行下载。

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

实现简单的文件系统

实验内容: 通过对具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 要求: 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

四分之一悬架模型simulink.7z

首先建立了四分之一车辆悬架系统的数学模型,应用MATLAB/Simulink软件建立该系统的仿真模型,并输入路面激励为随机激励,控制不同的悬架刚度和阻尼,选用最优的参数得到车辆悬架的振动加速度变化曲线

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

pokemmo的资源

pokemmo必须的4个rom 分别为绿宝石 火红 心金 黑白 还有汉化补丁 资源不错哦 记得下载

test_head.py

本文件主要是针对使用dlib的imglab标注工具标记的目标检测框和关键点检测而生成的xml文件, 转换为coco数据集格式.

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

20行代码教你用python给证件照换底色

20行代码教你用python给证件照换底色

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

相关热词 aero c# c#压缩图片 c# udp服务器 100线程 c# c# fidller请求 c# 参数 调用exe c# 打字母小游戏 c#显示未能加载文件 c# 右击菜单加快捷键 c#将重复的数据保留一条
立即提问