poi 生成Excel文字居中问题

HSSFCellStyle boderStyle = wb.createCellStyle();
//垂直居中
boderStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
boderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
poi 设置了居中但是生成的Excel中文字没有居中显示

我这个是从数据取出的数据有层级关系

4个回答

没有设置自动适应宽度的话 左右居中不生效

HSSFRow row = sheet.getRow(行);
HSSFCell cell = row.getCell((short)列);
cell.setCellStyle(boderStyle);

zhiqiang9267
鸿蒙道 HSSFRow row = sheet.getRow(行); HSSFCell cell = row.getCell((short)列); cell.setCellStyle(boderStyle); 这个现在也加了但是还是没效果
一年多之前 回复

hssf不是2003版本的吗 你们现在还都用2003的excel吗 2007和2003差距很大的啊!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

POI导出excel,XSSFTextBox 内部文字怎么才能水平居中,看了文档也没发现有这个方法,只有个垂直居中的,求助谢谢了?

POI导出excel,XSSFTextBox 内部文字怎么才能水平居中,看了文档也没发现有这个方法,只有个垂直居中的属性。 ``` XSSFDrawing patriarch = sheet.createDrawingPatriarch(); XSSFClientAnchor anchor = new XSSFClientAnchor(0,20,500, 100, (short)1, 1,(short)(colFields.length+2), 3); XSSFTextBox rec = patriarch.createTextbox(anchor); rec.setShapeType(ShapeTypes.RECT); XSSFRichTextString string = new XSSFRichTextString(titleStr); XSSFFont font18Bold = getFont18Bold(workbook);// 18号粗体 string.applyFont(font18Bold); rec.setText(string); rec.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 ```

利用POI生成Excel并通过Servlet下载

问题描述: 在servlet通过poi生成excel通过reponse返回给浏览器下载,现在导出的数据大于10w条,实现的代码是在for循环 将数据写入生成的excel中,通过BufferedOutputStream流返回,一次导10W以上的数据肯定会OutOfMemoryError,现在想每次 写1000条后,通过reponse返回给浏览器,然后再写1000,再通过reponse返回给浏览器 提问: 1. 一个请求,reponse可以返回多次吗? 2. 浏览器收到第一次的reponse返回值是否会弹出下载对话框?还是要等到文件传完后才弹出?

小白求助: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分钟

Poi合并单元格后居中显示

Poi合并单元格后居中显示,大家帮忙看下我写的有什么问题,为什么居中显示不了,谢谢啦

POI 生成Excel时,怎么限制 单元格输入长度的限制啊?

POI 生成Excel时,怎么限制 单元格输入长度的限制啊?

POI设置文字水平居中,背景色时的参数问题

![图片说明](https://img-ask.csdn.net/upload/201904/09/1554775297_663255.png) 这是什么意思? API用错了?

poi生成的excel文件打开以后大小改变

poi生成的excel文件打开以后大小改变了,关键是,如果不打开excel的话,用SAX去读已经生成的这个excel,得到的数据是不准确的,打开以后才能读准,有什么好的解决办法么

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 poi excel 生成图片

![图片说明](https://img-ask.csdn.net/upload/201808/01/1533107011_213602.png) 我想要通过 **1 **的数据。。怎么样在excel 插入图片的时候 让图片能够等比例的缩放呢 也就是我想问的 **2** 里面的数据怎么写呢?

POI 生成Excel 分段处理问题

<p>大家好! <br><br>我在做java 生成Excel文件时,由于数据量很大(七万多条),我创建的文件扩展名是xlsx,一下不可以导入Excel中,下载做分段导入,就是在sql语句中(例如每次查询2000条),当第一次执行时,先创建Excel标题,然后把第一次查询的2000数据写入Excel中,然后一直循环,直到把全部数据写入。请问大侠们,怎么循环写入?用什么方法? <br><br>if(i == 0 ) <br>{ <br>     FileOutputStream os = new FileOutputStream(new File(“D:\\excel\a.xlsx”)); <br>     XSSFWorkbook wb = new XSSFWorkbook(); <br>// <br>     XSSFSheet sheet = (XSSFSheet) wb.createSheet("aaa"); <br>// <br>     XSSFRow row = null; <br>     XSSFCell cell = null; <br>     int row_num = 0; <br>     int cell_num = 0; <br><br>     row = sheet.createRow(row_num); <br>     row.setHeightInPoints(30); <br>     sheet.autoSizeColumn(0, true); <br><br>     cell = row.createCell(cell_num++); <br>     ExcelUtil.setFormatTitleCenter(wb, cell); <br>     cell.setCellValue("SEQ"); <br>     <br>     wb.write(os); <br>     os.close(); <br>} <br>if(list.size()&gt;0){ <br>File file = new File(StringUtil.FILE_NAME); <br><br>String fullname = file.getAbsolutePath(); <br><br>FileInputStream fs = new   FileInputStream(fullname); <br><br>XSSFWorkbook wb = new XSSFWorkbook(fs); <br><br>XSSFSheet   sheet   =   wb.getSheetAt(0); <br><br><br>PDTO dto = null; <br>Iterator itor = list.iterator(); <br>   <br>XSSFRow row = null; <br>XSSFCell cell = null; <br><br>                   while( itor.hasNext() ) <br>{ <br>dto = (PipeDTO)itor.next(); <br>i++; <br>//定义列 <br>int j=0; <br>row = sheet.createRow(i); <br>//设置行长度自动 <br>//row.setHeight((short)500); <br>row.setHeightInPoints(20); <br>//row.setZeroHeight(true); <br>sheet.autoSizeColumn(j+1, true); <br>//获得这一行的每j列 <br>cell = row.createCell(j++); <br>//给单元格设值 <br>ExcelUtil.setFormatLineRight(wb, cell); <br>cell.setCellValue(dto.getSeq); <br>} <br>FileOutputStream os = new FileOutputStream(new File(“D:\\excel\a.xlsx”)); <br>wb.write(os); <br>os.close(); <br>               } <br>               else <br>      { <br>break; <br>      } <br>这样执行是还是这样的错误, <br>[java] java.lang.ArrayIndexOutOfBoundsException: -32765 <br>[java]     at java.util.ArrayList.get(Unknown Source) <br>[java]     at org.apache.poi.xssf.model.StylesTable.getFontAt(StylesTable.java:190) <br>[java]     at org.apache.poi.xssf.usermodel.XSSFWorkbook.getFontAt(XSSFWorkbook.java:592) <br>[java]     at org.apache.poi.xssf.usermodel.helpers.ColumnHelper.getColumnWidth(ColumnHelper.java:355) <br>[java]     at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:337) <br>[java]     at dlstx.monitor.data.pipe.PipeDAO.rt_code_check_error(PipeDAO.java:688) <br>[java]     at dlstx.monitor.data.ERPMonitor.pipeCheck(ERPMonitor.java:105) <br>[java]     at dlstx.monitor.data.ERPMonitor.main(ERPMonitor.java:53) <br>请指点,有没有好点的方法,怎么修改,十分感谢!</p> <p> </p>

POI解析excel问题

WorkbookFactory.create(FileInputStream) 这个方法读取2003的文件没问题 读取2007版本的 不抛异常 也读不出来 是什么情况?

小白求助:poi排序excel的问题

怎么让生成出来的excel,按规则排序 我的程序是读取指定excel,然后一行一行的读,一行一行的生成excel。 但生成的excel需要排序,我只能再写一个方法,读我生成的excel,再生成一个排序好的excel

Java POI导出Excel并添加图片问题

现在要利用POI导出Excel报表,并且需要将一张图片一起导出到Excel中,请问有Java中有什么方法能将图片的背景变成透明的,因为图片本身是一个公章,客户想通过程序实现盖章,所以需要将公章的图片变成透明的然后导出到Excel中,这样就不回遮挡Excel本身的内容。谢谢了!

POI获取Excel使用公式后的值

java使用POI生成Excel,单元格使用公式计算,使用cell.getNumericCellValue()获取值,得到的值一直为0. 因为我需要判断单元格的值为0设置不同的样式,可以使用以下方法: FormulaEvaluator evaluator = c.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator(); evaluator.evaluateFormulaCell(c); CellValue cellValue = evaluator.evaluate(c); Double celldata = cellValue.getNumberValue(); 这样就可以获取公式计算后的值

POI解析Excel日期取值问题

使用POI解析Excel时,Excel中日期字段填入格式为“XX年XX月”,显示为自定义类型。在后台取值时得到的是一个数值,譬如输入“2012年8月”,后台取到的是45135之类的数值,而不是日期。如何取到日期呢?或者“2012年8月”的字符串?

POI创建excel文件的问题

需要通过POI把合同内容写入到excel表,样式如图: ![图片说明](https://img-ask.csdn.net/upload/201612/19/1482139485_928128.png) 表中有图片,线条,合并单元格,以及各种字体和样式等; 现在想要从数据库中取出信息后,生成excel表, 每一页A4纸上最多显示两种产品信息, 如果合同中的产品种类多余2个, 就需要在下面另外打印一份合同 请大神帮忙给一下思路, 想来好久都不知道该怎么处理这种业务

POI导出Excel文件问题

我在导出excel文件的时候,加了一句代码: sheet.setForceFormulaRecalculation(true); 表示强制执行公式,不然的话结果不会自动计算出来。 问题是,这样到处excel文件以后,刚打开文件什么都不做,就提示已经做过修改了,关闭的时候需要Ctrl+s保存下,其实根本没有做任何改动。不知道是为什么,哪位高手来帮帮忙?

POI输出word内容居中或者首行缩进的格式就没了

POI输出word内容居中或者首行缩进的格式就没了,怎么解决这个问题就是让输出的是后wrd的内容显示格式

linux下poi操作excel的问题

System.out.println("excek保存路径"+path); Workbook workbook=null; Sheet sheet=null; try { System.out.println("开始写excel"); workbook = new SXSSFWorkbook(500); sheet = workbook.createSheet(); workbook.setSheetName(0, fileName); Row row = sheet.createRow(0); } catch (IOException e) { e.printStackTrace(); } 程序走到 workbook = new SXSSFWorkbook(500);这步就停止了这是什么原因

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

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

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

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

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

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

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

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

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

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

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

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问