精华内容
下载资源
问答
  • 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);  

    展开全文
  • poi设置单元格下拉下表

    千次阅读 2018-07-17 08:14:51
    poi是读写excel最常用的一个开源中间件,实际使用中我们可能会遇到这样的需求:限制某列单元格只能输入特定的内容,这就是excel的下拉列表特性,以下是wps中excel的一个截图: 从上图可以看出,维护下拉选项有两...

    poi是读写excel最常用的一个开源中间件,实际使用中我们可能会遇到这样的需求:限制某列单元格只能输入特定的内容,这就是excel的下拉列表特性,以下是wps中excel的一个截图:

    从上图可以看出,维护下拉选项有两种方式:

    1.手动添加下拉选项

    2.从单元格选择下拉选项

    第一种方式的缺点就是单元格字节数不能超过255个字,笔者在实际使用中输入的内容远超过这个数,所以笔者选择的是第二种方案,笔者新建了一个sheet,在这个sheet中某列输入实际需要的下拉列表内容(可以动态插入),比如省市,然后隐藏这个sheet即可,这样用户在使用过程中就可以根据这个模板文件输入限制的内容。下面就贴实际使用过程中分代码:

                String strFormula = "sheet名字!$A$1:$A$100";
                XSSFDataValidationConstraint constraint = new XSSFDataValidationConstraint(ValidationType.LIST,strFormula);
                // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
                CellRangeAddressList regions = new CellRangeAddressList(0,800, 12, 12);
                // 数据有效性对象
                DataValidationHelper help = new XSSFDataValidationHelper((XSSFSheet)sheet);
                DataValidation validation = help.createValidation(constraint, regions);
                sheet.addValidationData(validation);

    上面的代码就可以实现exel的下拉列表选择功能,而且不限制下拉列表长度!!

    展开全文
  • POI设置单元格样式

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

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:

    先获取工作薄对象:

    HSSFWorkbook wb = new HSSFWorkbook();

    HSSFSheet sheet = wb.createSheet();

    HSSFCellStyle setBorder = wb.createCellStyle();

    一、设置背景色:

    setBorder.setFillForegroundColor((short) 13);// 设置背景色
    setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    二、设置边框:

    setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
    setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
    setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
    setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

    三、设置居中:

    setBorder.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);

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

    五、设置列宽:

    sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值

    六、设置自动换行:

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

    七、合并单元格:

    Region region1 = new Region(0, (short) 0, 0, (short) 6);

    //参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号
    sheet.addMergedRegion(region1);

    八、加边框

      HSSFCellStyle cellStyle= wookBook.createCellStyle();
      cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      cellStyle.setBorderBottom(HSSFCellStyle.BorderBORDER_MEDIUM);
      cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
      cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
      cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
      cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
      cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
      cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
      cellStyle.setTopBorderColor(HSSFColor.BLACK.index);

    另附:完整小例子一个

    开发环境:IntelliJ IDEA 10.0.2

    @ResponseBody

    @RequestMapping(value = "/reportForms/joinStocktaking/exportStorage.api")

    public AjaxResponse exportStorage(@RequestBody StorageModel model) throws Exception {

    if (logger.isDebugEnabled())

    logger.debug("tmpdir is, {}", System.getProperty(JAVA_IO_TMPDIR));

    int row = 1;


    HSSFWorkbook workbook = new HSSFWorkbook();

    HSSFSheet hssfSheet = workbook.createSheet();

    HSSFCellStyle style = workbook.createCellStyle();

    style.setFillBackgroundColor(HSSFCellStyle.LEAST_DOTS);

    style.setFillPattern(HSSFCellStyle.LEAST_DOTS);


    //设置Excel中的边框(表头的边框)

    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);

    style.setBottomBorderColor(HSSFColor.BLACK.index);

    style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);

    style.setLeftBorderColor(HSSFColor.BLACK.index);

    style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);

    style.setRightBorderColor(HSSFColor.BLACK.index);

    style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);

    style.setTopBorderColor(HSSFColor.BLACK.index);


    //设置字体

    HSSFFont font = workbook.createFont();

    font.setFontHeightInPoints((short) 14); // 字体高度

    font.setFontName(" 黑体 "); // 字体


    style.setFont(font);

    HSSFRow firstRow = hssfSheet.createRow((short) 0);

    HSSFCell firstCell = firstRow.createCell(0);

    firstRow.setHeight((short) 400);

    //设置Excel中的背景

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    firstCell.setCellValue(new HSSFRichTextString("库房"));

    firstCell.setCellStyle(style);


    HSSFCell secondCell = firstRow.createCell(1);

    firstRow.setHeight((short) 400);

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    secondCell.setCellValue(new HSSFRichTextString("库区"));

    secondCell.setCellStyle(style);


    HSSFCell threeCell = firstRow.createCell(2);

    firstRow.setHeight((short) 400);

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    threeCell.setCellValue(new HSSFRichTextString("物料编号"));

    threeCell.setCellStyle(style);


    HSSFCell fourCell = firstRow.createCell(3);

    firstRow.setHeight((short) 400);

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    fourCell.setCellValue(new HSSFRichTextString("物料名称"));

    fourCell.setCellStyle(style);


    HSSFCell fiveCell = firstRow.createCell(4);

    firstRow.setHeight((short) 400);

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    fiveCell.setCellValue(new HSSFRichTextString("在库数量"));

    fiveCell.setCellStyle(style);


    HSSFCell sixCell = firstRow.createCell(5);

    firstRow.setHeight((short) 400);

    style.setFillForegroundColor(HSSFColor.GREEN.index);

    style.setFillBackgroundColor(HSSFColor.GREEN.index);

    sixCell.setCellValue(new HSSFRichTextString("锁定数量"));

    sixCell.setCellStyle(style);


    //设置列宽

    hssfSheet.setColumnWidth(0, 7000);

    hssfSheet.setColumnWidth(1, 8000);

    hssfSheet.setColumnWidth(2, 4000);

    hssfSheet.setColumnWidth(3, 6000);

    hssfSheet.setColumnWidth(4, 4000);

    hssfSheet.setColumnWidth(5, 4000);



    List<?> list = joinStocktackingService.findjoinStorageByTerm(model.getWareHouse(), model.getStockArea(), model.getMaterialCode(), model.getMaterialName());

    for (Object object : list) {

    Object[] objects = (Object[]) object;

    Storage storage = (Storage) objects[0];

    Warehouse warehouse = (Warehouse) objects[1];

    StockArea stockArea = (StockArea) objects[2];

    Material material = (Material) objects[3];



    //设置Excel中的边框

    HSSFCellStyle cellStyle = workbook.createCellStyle();

    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);

    cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);

    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);

    cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);

    cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);

    cellStyle.setRightBorderColor(HSSFColor.BLACK.index);

    cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);

    cellStyle.setTopBorderColor(HSSFColor.BLACK.index);



    HSSFRow hssfRow = hssfSheet.createRow((short) row);

    HSSFCell firstHssfCell = hssfRow.createCell(0);//库房

    firstHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    firstHssfCell.setCellValue(new HSSFRichTextString(warehouse.getName()));

    firstHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    HSSFCell secondHssfCell = hssfRow.createCell(1);

    secondHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    secondHssfCell.setCellValue(new HSSFRichTextString(stockArea.getName()));

    secondHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    HSSFCell threeHssfCell = hssfRow.createCell(2);

    threeHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    threeHssfCell.setCellValue(new HSSFRichTextString(material.getCode()));

    threeHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    HSSFCell fourHssfCell = hssfRow.createCell(3);

    fourHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    fourHssfCell.setCellValue(new HSSFRichTextString(material.getName()));

    fourHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    HSSFCell fiveHssfCell = hssfRow.createCell(4);

    fiveHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    fiveHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQty())));

    fiveHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    HSSFCell sixHssfCell = hssfRow.createCell(5);

    sixHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

    sixHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQtyLocked())));

    sixHssfCell.setCellStyle(cellStyle);//设置单元格的样式


    row++;

    }

    String newFileName = String.format("%s.%s", "joinStocktaking-" + (new Date()).getTime(), "xls");

    String uploadPath = FileUtils.contractPath(System.getProperty(JAVA_IO_TMPDIR), newFileName);

    FileOutputStream fOut = new FileOutputStream(uploadPath);

    workbook.write(fOut);

    fOut.flush();

    fOut.close();


    return AjaxResponse.createSuccess(newFileName);

    }

    再来张最终效果图:

    poi Excel 设置样式 - 賢賢 - ╉落淚的魚 — 賢┽

     

    展开全文
  • java poi设置单元格样式

    千次阅读 2018-03-21 09:54:44
    XSSFCellStyle style = wb....// 设置自动换行 style.setWrapText(true); // 水平对齐方式 style.setAlignment(HorizontalAlignment.CENTER); // 垂直对齐方式 style.setVerticalAlignment(VerticalAlignment....
  • POI设置单元格自适应宽度

    万次阅读 2018-09-26 15:48:59
    //设置自动列宽  sheet.trackAllColumnsForAutoSizing();  for (int i = 0; i &lt; headColNames.length; i++) {  sheet.autoSizeColumn(i);  sheet.setColumnWidth(i, sheet.getColu...
  • 一、设置字体 // 设置字体属性 Font font = workbook.createFont(); // 创建字体对象 font.setItalic(true); // 设置字体倾斜 font.setColor(Font.COLOR_RED); // 设置字体颜色 ...
  • POI设置单元格自动行高的思路

    千次阅读 2019-11-27 22:38:32
    在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高。那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高,通过CTRow对象的...
  • J2SE - POI设置单元格的宽度和高度

    千次阅读 2020-10-14 10:21:31
    * 设置指定单元格的宽度;单元格的宽度 即 列的宽度;方法来自 Sheet 接口 * @param columnIndex 列的索引;值从 0 开始 * @param width 宽度值;单位是 1/256 个字符宽度,即值建议设置为256的倍数 */ ...
  • HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 style.setFillForegroundColor(IndexedColors.CORNFLOWER...// 设置背景色 style.setFillPattern
  • apache poi 设置单元格背景色

    千次阅读 2012-08-20 14:44:10
    点击打开链接 这个链接是我收藏的
  • POI 设置单元格的宽度和高度

    千次阅读 2013-04-29 14:32:20
    [url]http://z3sm2012.iteye.com/blog/1429239[/url]
  • * 设置单元格样式 * */ public void setCellStyle(Workbook workbook) throws IOException { //设置单元格背景颜色 Sheet sheet=workbook.getSheetAt(0); Row row=sheet.getRow(0); Cell cell=row.getCell(0...
  • JAVA实现POI execl设置单元格类型汇总欢迎使用通过java的POI实现execl编辑器引入相关jar包第一步获取execl文件表格样式字体类型编辑定位行列的具体位置修改execl表格的字体(字体,大小,颜色,粗体)修改execl表格...
  • POI excel 单元格自适应

    2020-09-11 15:30:43
    POI excel 单元格自适应 //设置单元格自适应 sheet.autoSizeColumn(x,true); x从0开始 // 标题样式 XSSFCellStyle titleStyle = workbook.createCellStyle(); titleStyle.cloneStyleFrom(cellStyle); titleStyle....
  • POI 3.17设置单元格的格式

    千次阅读 2019-09-17 17:15:26
    @[TOC] 写这篇文章的原因 有的时候写借口懒得查API就在网上找相似的代码,结果poi不同版本的差异较大,很多文章都不写环境,上来就说事。... * 设置单元格的格式 * @param workbook * @return...
  • POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStylecellStyle = wb.createCellStyle(); ...
  • POI合并单元格

    2015-08-06 13:20:25
    // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式) columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index); return columnHeadStyle; } /** *  * * 功能:...
  • Java利用POI生成Excel强制换行 使用POI创建一个简单的 myXls.xls 文件常用的包为 org.apache.poi.hssf.usermodel.*;例子:import java.io.*;import org.apache.poi.hssf.usermodel.*;public cl...
  • 使用POI设置EXCEL单元格格式

    千次阅读 2012-10-31 18:56:59
    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = wb.createCellStyle(); ...
  • ...POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBo
  • POI HSSF 单元格和字体设置

    万次阅读 2010-05-12 09:34:00
    添加区域,合并单元格 Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo,(short)columnTo); sheet.addMergedRegion(region); //得到所有区域 sheet.getNumMergedRegions() render_cod
  • poi单元格设置

    2013-02-21 11:51:24
    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = wb....
  • Java POI 设置Excel单元格的宽度和高度

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

    千次阅读 2019-05-15 10:37:43
    // 创建工作表 Workbook workbook= new XSSFWorkbook(); // 创建工作簿 Sheet sheet = workbook.createSheet(); // 设置默认宽度 sheet.setDefaultColumnWidth(20); ...
  • POI进行跨行需要用到对象HSSFSheet对象,现在就当我们程序已经定义了一个HSSFSheet对象sheet。 跨第1行第1个到第2个单元格的操作为 sheet.addMergedRegion(new Region(0,(short)0,0,(short)1)); 跨第1行第1个到第2行...

空空如也

空空如也

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

poi设置单元格大小