当前位置:首页 > 科技

【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集

1.前言2。单元格锁定3。设置列宽4。设置行高5。字体设置,颜色6。合并单元格

1.前言

虽然Poi框架支持从JAVA代码向excel导出数据,但在实际开发中,通常需要设置excel字体、颜色、行高和列宽等属性,有时需要锁定单元格,以防止其他人篡改数据。

废话不多,直接上传代码。

2.锁定储存格

汇出Excel时,您可以自然地汇入excel。例如,您可以汇出、修改和重新汇入某些资料。但是此时,有些基本信息不希望用户随意修改。这里用的是excel的锁。

(密码)

代码:

//Excel文件创建

hssf workbook workbook=new hssf workbook();

hssf sheet sheet=workbook . create sheet(' yyymmdd ');

//图纸锁定

(' zgd ');

在这种情况下,此工作表被锁定

但是我们还希望能打开一些单元格进行修改,这时要详细设置

创建CellStyle:

cell style unlock cell=workbook . createcellstyle();

unlock cell . set locked(false);

然后给不需要锁定的单元格cellStyle

//dataRow行中的第I个单元格设置为不锁定

Da(i)。setCellStyle(unlock cell);

以微服务思想为基础,在B2C电商场景下构建的项目的实践。核心技术栈是Spring Boot Dubbo。今后将重组Spring Cloud Alibaba。

项目地址:

3.设置列宽

锁定图纸后,将出现无法更改列宽的问题

现在不得不自己设定10宽度。目前,设置在互联网上找到的列宽的方法如下。

1.按比例列宽:

(1);

(1、true);

两种方法都是可变列宽,但此方法仅在以下版本中可用:poi版本请注意不要太旧。

注意:第一种方法不适合合并单元格中的单元格,因此必须使用第二种方法。

测试后,这个适应性API遇到行数多的数据需要很多时间,1000行需要两分钟!所以请尽量不要使用。

();

而且,这两种方法对英语数字有好处,但对汉语的支持并不好。

2.使用数组设置近似宽度,手动设置set宽度

Int[] width={xxx,XXX };

For循环

(I,宽度[I]);

3.根据数据列中最长字符串的长度设置宽度

所以要注意DIY :

检查此列中最长的字符串,然后单击

Int length=()。length

((短)列数,(短) (长度* 256));

这里我反复尝试后,我个人认为将最大宽度限制在10000到15000左右是合适的,剩下的交给了excel的自动换行。

像我这样的地方有很多行数据,不知道哪一行的内容最长。这里简单地提供了两种思维方式。(方法很多,可以达到目的。):

表示使用MapInteger、List和key放入List中的特定列

是每行的这一列的内容的长度 , 每遍历一行的一列, 就map.put(i, li(length)), 然后用Collec(i))来获取第i列的最长的长度
  • 还是一样,用一个map: Map<Integer, Integer>,key是指具体哪一列,value是每行的这一列的内容的长度, map.put(i,Ma(length,map.get(i))),来确保map中的key对应的value永远是目前的最大的长度.
  • 我这里使用的第二种:

    设置自动换行后,不要设置固定的行高,否则超出的部分也会被遮住不显示

    // 创建Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("sheet"); //设置样式 CellStyle blackStyle = workbook.createCellStyle(); //自动换行*重要* blackS(true); //存储最大列宽 Map<Integer,Integer> maxWidth = new HashMap<>(); // 标题行 HSSFRow titleRow = (0); (20);//目的是想把行高设置成20px (0).setCellValue("sku编号"); (1).setCellValue("商品标题"); (2).setCellValue("商品名"); // 初始化标题的列宽,字体 for (int i= 0; i<=3;i++){ maxWid(i,(i).getStringCellValue().getBytes().length * 256 + 200); (i).setCellStyle(blackStyle);//设置自动换行 } for (Map<String, Object> map : list) { int currentRowNum = () + 1; //数据行 HSSFRow dataRow = (currentRowNum); // 记录这一行的每列的长度 List<Object> valueList = new ArrayList<Object>(); String val0 = map.get("skuId") == null ? "—" : ((Double) ("skuId"))).intValue()+""; valueLi(val0); da(0).setCellValue(val0); String val1 = map.get("title") == null ? "" : map.get("title").toString(); valueLi(val1); da(1).setCellValue(val1); String val2 = map.get("goodsName") == null ? "" : map.get("goodsName").toString(); valueLi(val2); da(2).setCellValue(val2); String val3 = map.get("catName") == null ? "" : map.get("catName").toString(); valueLi(val3); da(3).setCellValue(val3); String val4 = map.get("brandName") == null ? "" : map.get("brandName").toString(); for(int i = 0;i<=3;i++){ int length = valueLi(i).toString().getBytes().length * 256 + 200; //这里把宽度最大限制到15000 if (length>15000){ length = 15000; } maxWid(i,Ma(length,maxWid(i))); da(i).setCellStyle(blackStyle);//设置自动换行 } } for (int i= 0; i<=3;i++){ //设置列宽 (i,maxWid(i)); }

    现在的话, 列宽虽然是比较生硬的套用内容长度来设置, 不过也比之前好多了, 列宽是不能超过256*256的,否则会报错,所以我这里设置的最大列宽为15000,超出的部分会自动换行

    4. 设置行高

    行高就很简单了,

    (20);//目的是想把行高设置成20px

    注意,设置了固定行高,自动换行就不会自适应行高了

    5. 设置字体,颜色

    创建CellStyle , 然后创建HSSFFont , 再把HSSFFont注入给CellStyle , 在把CellStyle给cell设置

    // 设置字体 CellStyle redStyle = workbook.createCellStyle(); HSSFFont redFont = workbook.createFont(); //颜色 redFont.setColor); //设置字体大小 redFont.setFontHeightInPoints((short) 10); //字体 ("宋体"); redS(redFont); HSSFCell cell13 = (13); cell13.setCellStyle(redStyle); cell13.setCellValue("注意:只允许修改销售价,供应价,市场价和库存");

    6. 合并单元格

    合并单元格的话,建议先合并,合并之后,在合并的第一行第一列set值就可以了

    //这里代表在第0行开始,到0行结束,从0列开始,到10列结束,进行合并,也就是合并第0行的0-10个单元格 CellRangeAddress cellRange1 = new CellRangeAddress(0, 0, (short) 0, (short) 10); (cellRange1); CellRangeAddress


    本人花费2个月时间,整理了一套java开发技术资料,内容涵盖java基础,分布式、微服务等主流技术资料,包含大厂面经,学习笔记、源码讲义、项目实战、讲解视频。


    希望可以帮助一些想通过自学提升能力的朋友,领取资料,扫码关注一下


    记得转发+关注+私信

    私信回复【2022面试资料】


    领取更多学习资料

    1.《【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

    2.《【poi怎么设置excel】POI高级用法、单元格锁定、行高设置、字体设置、新手快速收集》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

    3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2531242.html

    上一篇

    【EXcel怎么链接CAD】汇入至AUTOCAD——Excel表格CAD

    【poi怎么设置excel】还在使用原生poi处理excel吗?太麻烦了,看看这个。

    【poi怎么设置excel】还在使用原生poi处理excel吗?太麻烦了,看看这个。

    poi怎么设置excel相关介绍,1、easypoi 前言Excel在日常工作中经常用于存储用例信息,是一个非常方便的数据存储工具,具有很多优点。对此我不详细说明。 如今,Java运营excel,Java被誉为世界上最好的语言(无可辩...

    【poi怎么设置excel】使用POI和反射导入Excel自动识别图元类

    【poi怎么设置excel】使用POI和反射导入Excel自动识别图元类

    poi怎么设置excel相关介绍,前言: 第一次启动excel导入时,每当需要导入新的Excel文件时,都必须重新创建相应的工具以导入Excel。所以我很苦恼,认为有必要使用万能引进的Excel工具。(威廉莎士比亚,Excel工具,N...

    【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)

    • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
    • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
    • 【poi怎么设置excel】基于SpringBoot POI实现的excel导入和导出(教程)
    【poi怎么设置excel】使用POI将查询到的数据表数据逐个表地导出到Excel中

    【poi怎么设置excel】使用POI将查询到的数据表数据逐个表地导出到Excel中

    poi怎么设置excel相关介绍,网站防火墙 网站防火墙 您的请求带有不合法参数,已被网站管理员设置拦截! 可能原因:您提交的内容包含危险的攻击请求 如何解决: 1)检查提交内容; 2)如网站托管,请联系空间提供商; 3)普通网站访客...

    【poi怎么设置excel】POI导出Excel

    • 【poi怎么设置excel】POI导出Excel
    • 【poi怎么设置excel】POI导出Excel
    • 【poi怎么设置excel】POI导出Excel
    【poi怎么设置excel】Java使用poi导入导出Excel

    【poi怎么设置excel】Java使用poi导入导出Excel

    poi怎么设置excel相关介绍,前言 1、将用户信息导出到excel表(导出数据……。)。 2、将Excel表中的信息输入网站数据库(上传练习)。……。)。 设计为excel的开发过程,例如Excel导出、Excel导入数据库! E...

    【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

    【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

    poi怎么设置excel相关介绍,阿帕奇poi POI是[Poor Obfuscation Implementation]的首字母缩写,意思是[可怜的模糊实现]。Java进程读取和写入Microsoft Office格式文件的能力。 ...