精华内容
下载资源
问答
  • Java POI 设置Excel单元格宽度和高度

    万次阅读 2017-05-16 17:55:03
    来源:...在Excel中,单元格宽度其实就是列的宽度,因为Excel假设这一列的单元格宽度肯定一致。所以要设置

    来源:http://www.jfox.info/java-poi-%E8%AE%BE%E7%BD%AEexcel%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6


    在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。

    现在假设你要设置B列的宽度,就可以用下面的代码:

     

    HSSFWorkbook hssfworkbook = new HSSFWorkbook();

    HSSFSheet sheet1 = hssfworkbook.CreateSheet(“Sheet1″);

    sheet1.SetColumnWidth(1, 100 * 256);

    这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

    刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:

    int col1width = sheet1.GetColumnWidth(1);

     

    说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

    要设置第一行的高度,可以用如下代码:

    sheet1.CreateRow(0).Height = 200*20;

     

    或者

    sheet1.CreateRow(0).HeightInPoints = 200;

    如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。

     

    你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。

    一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

    sheet1.DefaultColumnWidth=100*256;

    sheet1.DefaultRowHeight=30*20;

     


    展开全文
  • POI设置单元格宽度和高度

    千次阅读 2019-01-21 16:57:34
    POI 1.2教程 - 2.2.7 设置单元格宽度和高度 博客分类: Java学习 POI     NPOI 1.2教程 - 2.2.7 设置单元格宽度和高度 作者:Tony Qu NPOI官方网站:http://npoi.codeplex.com/   在Excel中,...

    POI 1.2教程 - 2.2.7 设置单元格的宽度和高度

    博客分类:  Java学习 POI

     

     

    NPOI 1.2教程 - 2.2.7 设置单元格的宽度和高度

    作者:Tony Qu

    NPOI官方网站:http://npoi.codeplex.com/

     

    在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。

    现在假设你要设置B列的宽度,就可以用下面的代码:

     

    HSSFWorkbook hssfworkbook = new HSSFWorkbook();
    HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
    sheet1.SetColumnWidth(1, 100 * 256);

    这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

    刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:

    int col1width = sheet1.GetColumnWidth(1);

     

    说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

    要设置第一行的高度,可以用如下代码:

    sheet1.CreateRow(0).Height = 200*20;

     

    或者

    sheet1.CreateRow(0).HeightInPoints = 200;

    如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。

     

    你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。

    一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

    sheet1.DefaultColumnWidth=100*256;
    sheet1.DefaultRowHeight=30*20;
    展开全文
  • java使用POI设置单元格的样式

    千次阅读 2019-06-24 14:29:11
    HSSFCellStyle cellStyle = wb....一、设置背景色: cellStyle.setFillForegroundColor((short) 13);// 设置背景色 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 二、设置边框: cellStyle.s...

    HSSFCellStyle cellStyle = wb.createCellStyle();  

     一、设置背景色:

    cellStyle.setFillForegroundColor((short) 13);// 设置背景色  

    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  

    二、设置边框:

    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框  

    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框  

    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框  

    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框  

    三、设置居中:

    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中  

    四、设置字体:

    HSSFFont font = wb.createFont();  

    font.setFontName("黑体");  

    font.setFontHeightInPoints((short) 16);//设置字体大小  

      

    HSSFFont font2 = wb.createFont();  

    font2.setFontName("仿宋_GB2312");  

    font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示  

    font2.setFontHeightInPoints((short) 12);  

      

    cellStyle.setFont(font);//选择需要用到的字体格式  

    五、设置列宽:

    sheet.setColumnWidth(0, 3766); 

    //第一个参数代表列id(从0开始),第2个参数代表宽度值  参考 :"2012-08-10"的宽度为2500  

    六、设置自动换行:

    cellStyle.setWrapText(true);//设置自动换行  

    七、合并单元格:

    Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号 

    //此方法在POI3.8中已经被废弃,建议使用下面一个  

    或者用

    CellRangeAddress region1 = new CellRangeAddress(rowNumber, rowNumber, (short) 0, (short) 11);  

    //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列    

    但应注意两个构造方法的参数不是一样的,具体使用哪个取决于POI的不同版本。

    sheet.addMergedRegion(region1);  

    展开全文
  • java poi 合并单元格

    千次阅读 2017-06-02 16:23:55
    poi导出excel的,动态合并单元格

    最近做了一个导出excel的功能,用的是poi,要求做成如下图格式 这里要动态合并单元格.注意要先写入数据要写完整条数据后再去合并单元格,不然会出现问题如上图,'王五'和他所对应的所有订单是一条数据.这里合并重要的是计算开始行,结束行.


    private static void writer(String path, String fileName,String fileType){    
            try
    		{
                //创建文件流     
                OutputStream stream = new FileOutputStream(path+fileName+"."+fileType);
            	//创建工作文档对象     
            	HSSFWorkbook workbook = new HSSFWorkbook();
        
    			// 生成一个表格
    			HSSFSheet sheet = workbook.createSheet("sheet");
    			// 设置表格默认列宽度为15个字节
    			sheet.setDefaultColumnWidth((short) 15);
    			// 生成一个样式
    			HSSFCellStyle 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);
    			// 生成一个字体
    			HSSFFont font = workbook.createFont();
    			font.setColor(HSSFColor.VIOLET.index);
    			font.setFontHeightInPoints((short) 12);
    			font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    			// 把字体应用到当前的样式
    			style.setFont(font);
    			// 生成并设置另一个样式
    			HSSFCellStyle style2 = workbook.createCellStyle();
    			style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
    			style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    			style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    			style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    			style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
    			style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
    			style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    			style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    			// 生成另一个字体
    			HSSFFont font2 = workbook.createFont();
    			font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
    			// 把字体应用到当前的样式
    			style2.setFont(font2);
            	
    			//数据
    			Map<Account,List<Order>> map=getDate();
    			String[] headers={"名称","性别","订单编号","产品名称","价格"};
    			
    			// 表单名称
    			HSSFRow tableName = sheet.createRow(0);
    			HSSFCell cellTableName = tableName.createCell(0);
    			cellTableName.setCellValue("用户订单");// 第一行内容
    			cellTableName.setCellStyle(style);// 给第一行加样式
    			
    			//合并单元格
    			Region region = new Region(0, (short) 0, 0, (short) (headers.length - 1));
    			sheet.addMergedRegion(region);
    			
    			// 产生表格标题行
    			HSSFRow row = sheet.createRow(1);
    			for (short ii = 0; ii < headers.length; ii++)
    			{
    				HSSFCell cell = row.createCell(ii);
    				cell.setCellStyle(style);
    				HSSFRichTextString text = new HSSFRichTextString(headers[ii]);
    				cell.setCellValue(text);
    			}
    			
    			int index = 1;
    			int rowbased=2;
    			// 遍历集合数据,产生数据行
    			for(Map.Entry<Account, List<Order>> entry : map.entrySet()){
    				Account account=entry.getKey();
    				List<Order> orders=map.get(account);
    				Field[] accountFields =account.getClass().getDeclaredFields();
    				System.out.println(orders.size()+"---");
    				//以订单为主,遍历出所有数据
    				for(int d=0;d<orders.size();d++){
    					int columnNumber=accountFields.length;
    					index++;
    					row = sheet.createRow(index);
    					Order order=orders.get(d);
    					Field[] orderFields=order.getClass().getDeclaredFields();
    					//遍历订单数据
    					for(int s=0;s<orderFields.length;s++){
    						HSSFCell cell = row.createCell(columnNumber);
    						cell.setCellStyle(style2);
    						Field field = orderFields[s];
    						String fieldName = field.getName();
    						String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
    	
    						@SuppressWarnings("rawtypes")
    						Class tCls = order.getClass();
    	
    						@SuppressWarnings("unchecked")
    						Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
    	
    						Object value = getMethod.invoke(order, new Object[] {});
    						String textValue = "";
    						if (value != null || "".equals(value))
    						{
    							textValue = value.toString();
    						}
    						cell.setCellValue(textValue);
    						columnNumber++;
    					}
    					//写入会员数据
    					for(int i=0;i<accountFields.length;i++){
    						HSSFCell cell = row.createCell(i);
    						Field field = accountFields[i];
    						String fieldName = field.getName();
    						String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
    
    						@SuppressWarnings("rawtypes")
    						Class tCls = account.getClass();
    
    						@SuppressWarnings("unchecked")
    						Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
    
    						Object value = getMethod.invoke(account, new Object[] {});
    						String textValue = "";
    						if (value != null || "".equals(value))
    						{
    							textValue = value.toString();
    						}
    						cell.setCellValue(textValue);
    						cell.setCellStyle(style2);
    					}
    				}
    				
    				//写完一个会员的数据就合并一次单元格
    				for(int i=0;i<accountFields.length;i++){
    					/****
    					 * CellRangeAddress(开始行,结束行,开始列,结束列)
    					 */
    					//如果订单数量大于1就要合并
    					if(orders.size()>1){
    						sheet.addMergedRegion(new CellRangeAddress(rowbased, rowbased+orders.size()-1, i, i));
    					}else{
    						sheet.addMergedRegion(new CellRangeAddress(rowbased, rowbased, i, i));
    					}
    				}
    				//计算开始行
    				rowbased=rowbased+orders.size();
    			}
    			
                //写入数据     
    			workbook.write(stream);    
                //关闭文件流     
                stream.close(); 
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
       
        }

    实例下载地址:点击打开链接

    http://download.csdn.net/download/zhong_ling/9858862

    展开全文
  • // 宽度 font.setColor(HSSFColor.RED.index); //红色 return font; } public static void createValue(HSSFFont font) { HSSFRichTextString hts = new HSSFRichTextString(content); //把【640】设置样式,...
  • poi设置单元格宽高度

    千次阅读 2017-12-05 11:56:34
    原文:... 作者:Tony Qu ...在Excel中,单元格宽度其实就是列的宽度,因为Excel假设这一列的单元格宽度肯定一致。所以要设置单元格宽度,我们就得从列的宽度下手
  • I working on a small project where I am creating word file by Java and enter some detail in this word file.I am able to create word file and also able to enter data into it. I also write a table into ...
  • POI设置单元格样式

    千次阅读 2014-05-29 11:28:04
    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = wb....
  • java POI 单元格格式设置居中

    万次阅读 2019-01-05 18:21:44
    设置颜色,设置前景色 style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 设置居中对齐  //设置水平...
  • POI设置单元格自动行高的思路

    千次阅读 2019-11-27 22:38:32
    在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高。那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高,通过CTRow对象的...
  • 在Excel中,单元格宽度其实就是列的宽度,因为Excel假设这一列的...所以要设置单元格宽度,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度
  • 在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高。那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高,通过CTRow对象的...
  • POI导出设置单元格默认的宽度

    千次阅读 2019-05-15 10:37:43
    // 创建工作表 Workbook workbook= new XSSFWorkbook(); // 创建工作簿 Sheet sheet = workbook.createSheet(); // 设置默认宽度 sheet.setDefaultColumnWidth(20); ...
  • 最近在网上学习了java POI excel导出 整了一个例子,代码也简单,创建行、列、设置宽度高度、合并列 下面贴出我滴代码: public class Total{ private Integer payWay; private Float amount; private String...
  • package com.tgpms.util; import ... import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Font;...import java.io.File; imp.
  • java设置Excel单元格格式 POI

    万次阅读 2012-04-23 17:58:54
    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = wb.createCellStyle(); ...
  • 使用POI导出Excel文件 private XSSFWorkbook writeExcel(List<SupplyKcPlan> list) { if(CollectionUtils.isEmpty(list)){ return new XSSFWorkbook(); } XSSFWorkbook wb = new XSSFWorkbook(); ...
  • POI单元格宽度自动适应

    千次阅读 2009-01-29 20:58:54
    [code="java"]sheet.autoSizeColumn(( short ) 0 ); [/code]
  • 在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高。那如何通过Java代码来实现呢?请看下面步骤:(一)首先,将excel设置为最合适的行高,通过CTRow对象的...
  • POI设置列宽自适应的方法public void autoSizeColumn(int column, boolean useMergedCells); 可以看到除了第一个列标参数外,还有第二个useMergedCells的布尔值参数。它的意思是,在进行列宽自适应时,要不要考虑...
  • java POI 设置高度(根据宽度估算)

    千次阅读 2019-02-19 14:38:25
    String str = serviceImpl.queryStr(id); ...//一行估有55个字,5个字一个单元格,有11个单元格合并了 while((index = str.indexOf("\n")) != -1){  strCnt = strCnt + (rowCharCnt ...
  • 近半年的开发中都在和导入导出打交道,涉及到导出那自然避免不了一些单元格的合并、设置单元格背景色、设置单元格边框颜色、设置字体颜色、字体是否加粗等问题。因此想要总结一下,也让以后遇到类此问题可以方便查看...
  • Java poi导出excel合并标题单元格

    万次阅读 2015-12-11 11:12:52
    Java poi导出excel合并标题单元格
  • POI Word单元格合并

    千次阅读 2020-04-08 16:58:56
    1、pom.xml <dependency> <...org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <dep...
  • 2、解决1后未满足需求3,即在导出的Excel中直接编辑新行是提示写保(原因是Excel单元格默认是锁定状态,而保护工作表是保护的锁定的单元格),思路:直接操作列 3、解决2后,发现直接编辑新行时下拉框
  • POI设置cell宽度

    千次阅读 2018-10-30 09:40:00
    sheet.setColumnWidth(i, (int)(title.getBytes().length * 1.2d * 256 > 12 * 256 ?...//256为单个字符所占的宽度 //1.2d表示比实际宽度大20% //12*256表示最低宽度为12个字符 转载于:http...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,245
精华内容 1,698
关键字:

javapoi设置单元格宽度

java 订阅