首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

net.sf.jxls重写包 解决poi升级版本后jxls版本过低不兼容的问题

后端 92.37KB 34 需要积分: 1
立即下载

资源介绍:

jxls重写包,解决poi升级版本后jxls版本过低不兼容的问题;由于jxls后续没有维护,版本一直处于较老版本,而且jxls内部使用了poi的东西,poi一直有在升级版本,如果项目上把poi版本升了上来,jxls会不兼容,需要重写才能使用
package net.sf.jxls.util; import net.sf.jxls.transformer.RowCollection; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.util.*; import java.util.regex.Pattern; /** * This class contains many utility methods used by jXLS framework * * @author Leonid Vysochyn * @author Vincent Dutat */ public final class Util { protected static final Log log = LogFactory.getLog(Util.class); private static final String[][] ENTITY_ARRAY = { { "quot", "34" }, // " - // double // - // quote { "amp", "38" }, // & - ampersand { "lt", "60" }, // < - less-than { "gt", "62" }, // > - greater-than { "apos", "39" } // XML apostrophe }; private static Map xmlEntities = new HashMap(); static { for (int i = 0; i < ENTITY_ARRAY.length; i++) { xmlEntities.put(ENTITY_ARRAY[i][1], ENTITY_ARRAY[i][0]); } } public static void removeRowCollectionPropertiesFromRow( RowCollection rowCollection) { int startRow = rowCollection.getParentRow().getPoiRow().getRowNum(); Sheet sheet = rowCollection.getParentRow().getSheet() .getPoiSheet(); for (int i = 0, c = rowCollection.getDependentRowNumber(); i <= c; i++) { Row hssfRow = sheet.getRow(startRow + i); if (hssfRow.getFirstCellNum() >= 0 && hssfRow.getLastCellNum() >= 0) { for (int j = hssfRow.getFirstCellNum(), c2 = hssfRow.getLastCellNum(); j <= c2; j++) { Cell cell = hssfRow.getCell(j); removeRowCollectionPropertyFromCell(cell, rowCollection .getCollectionProperty().getFullCollectionName()); } } } } private static void removeRowCollectionPropertyFromCell(Cell cell, String collectionName) { String regex = "[-+*/().A-Za-z_0-9\\s]*"; if (cell != null && cell.getCellType() == CellType.STRING) { String cellValue = cell.getRichStringCellValue().getString(); String strToReplace = "\\$\\{" + regex + collectionName.replaceAll("\\.", "\\\\.") + "\\." + regex + "\\}"; cell.setCellValue(cell.getSheet().getWorkbook().getCreationHelper().createRichTextString(cellValue.replaceAll( strToReplace, ""))); } } /** * Removes merged region from sheet * * @param sheet * @param region */ public static void removeMergedRegion(Sheet sheet, CellRangeAddress region) { int index = getMergedRegionIndex(sheet, region); if (index >= 0) { sheet.removeMergedRegion(index); } } /** * returns merged region index * * @param sheet * @param mergedRegion * @return index of mergedRegion or -1 if the region not found */ private static int getMergedRegionIndex(Sheet sheet, CellRangeAddress mergedRegion) { for (int i = 0, c = sheet.getNumMergedRegions(); i < c; i++) { CellRangeAddress region = getMergedRegion(sheet, i); if (areRegionsEqual(region, mergedRegion)) { return i; } } return -1; } public static boolean areRegionsEqual(CellRangeAddress region1, CellRangeAddress region2) { if ((region1 == null && region2 != null) || (region1 != null && region2 == null)) { return false; } if (region1 == null) { return true; } return (region1.getFirstColumn() == region2.getFirstColumn() && region1.getLastColumn() == region2.getLastColumn() && region1.getFirstRow() == region2.getFirstRow() && region2 .getLastRow() == region2.getLastRow()); } private static CellRangeAddress getMergedRegion(Sheet sheet, int i) { CellRangeAddress region = sheet.getMergedRegion(i); return region; } protected static boolean isNewMergedRegion(CellRangeAddress region, Collection mergedRegions) { for (Iterator iterator = mergedRegions.iterator(); iterator.hasNext();) { CellRangeAddress cellRangeAddress = (CellRangeAddress) iterator .next(); if (areRegionsEqual(cellRangeAddress, region)) { return false; } } return true; } public static CellRangeAddress getMergedRegion(Sheet sheet, int rowNum, int cellNum) { for (int i = 0, c = sheet.getNumMergedRegions(); i < c; i++) { CellRangeAddress merged = getMergedRegion(sheet, i); if (isRangeContainsCell(merged, rowNum, cellNum)) { return merged; } } return null; } public static boolean isRangeContainsCell(CellRangeAddress range, int row, int col) { if ((range.getFirstRow() <= row) && (range.getLastRow() >= row) && (range.getFirstColumn() <= col) && (range.getLastColumn() >= col)) { return true; } return false; } public static boolean removeMergedRegion(Sheet sheet, int rowNum, int cellNum) { Set mergedRegionNumbersToRemove = new TreeSet(); for (int i = 0, c = sheet.getNumMergedRegions(); i < c; i++) { CellRangeAddress merged = getMergedRegion(sheet, i); if (isRangeContainsCell(merged, rowNum, cellNum)) { mergedRegionNumbersToRemove.add(i); } } for (Iterator iterator = mergedRegionNumbersToRemove.iterator(); iterator .hasNext();) { Integer regionNumber = (Integer) iterator.next(); sheet.removeMergedRegion(regionNumber.intValue()); } return !mergedRegionNumbersToRemove.isEmpty(); } public static void prepareCollectionPropertyInRowForDuplication( RowCollection rowCollection, String collectionItemName) { int startRow = rowCollection.getParentRow().getPoiRow().getRowNum(); Sheet sheet = rowCollection.getParentRow().getSheet() .getPoiSheet(); for (int i = 0, c = rowCollection.getDependentRowNumber(); i <= c; i++) { Row hssfRow = sheet.getRow(startRow + i); if (hssfRow.getFirstCellNum() >= 0 && hssfRow.getLastCellNum() >= 0) { for (int j = hssfRow.getFirstCellNum(), c2 = hssfRow.getLastCellNum(); j <= c2; j++) { Cell cell = hssfRow.getCell(j); prepareCollectionPropertyInCellForDuplication(cell, rowCollection.getCollectionProperty() .getFullCollectionName(), collectionItemName); } } } } private static void prepareCollectionPropertyInCellForDuplication( Cell cell, String collectionName, String collectionItemName) { if (cell != null && cell.getCellType() == CellType.STRING) { String cellValue = cell.getRic

资源文件列表:

net.zip 大约有91个文件
  1. net/
  2. net/sf/
  3. net/sf/jxls/
  4. net/sf/jxls/controller/
  5. net/sf/jxls/controller/SheetCellFinder.java 318B
  6. net/sf/jxls/controller/SheetTransformationController.java 2.17KB
  7. net/sf/jxls/controller/SheetTransformationControllerImpl.java 8.26KB
  8. net/sf/jxls/controller/WorkbookCellFinder.java 326B
  9. net/sf/jxls/controller/WorkbookCellFinderImpl.java 1.27KB
  10. net/sf/jxls/controller/WorkbookTransformationController.java 628B
  11. net/sf/jxls/controller/WorkbookTransformationControllerImpl.java 1.34KB
  12. net/sf/jxls/exception/
  13. net/sf/jxls/exception/ParsePropertyException.java 456B
  14. net/sf/jxls/exception/TaglibRegistrationException.java 543B
  15. net/sf/jxls/formula/
  16. net/sf/jxls/formula/BaseFormulaResolver.java 6.65KB
  17. net/sf/jxls/formula/CellRef.java 9.35KB
  18. net/sf/jxls/formula/CommonFormulaResolver.java 5.38KB
  19. net/sf/jxls/formula/Formula.java 8.13KB
  20. net/sf/jxls/formula/FormulaController.java 370B
  21. net/sf/jxls/formula/FormulaControllerImpl.java 6.87KB
  22. net/sf/jxls/formula/FormulaPart.java 9.89KB
  23. net/sf/jxls/formula/FormulaResolver.java 663B
  24. net/sf/jxls/formula/ListRange.java 1.97KB
  25. net/sf/jxls/parser/
  26. net/sf/jxls/parser/Aggregator.java 2.54KB
  27. net/sf/jxls/parser/Cell.java 4.58KB
  28. net/sf/jxls/parser/CellParser.java 13.88KB
  29. net/sf/jxls/parser/Expression.java 5.18KB
  30. net/sf/jxls/parser/ExpressionCollectionParser.java 4.12KB
  31. net/sf/jxls/parser/ExpressionParser.java 1.47KB
  32. net/sf/jxls/parser/Property.java 3.59KB
  33. net/sf/jxls/processor/
  34. net/sf/jxls/processor/CellProcessor.java 523B
  35. net/sf/jxls/processor/PropertyPreprocessor.java 464B
  36. net/sf/jxls/processor/RowProcessor.java 303B
  37. net/sf/jxls/report/
  38. net/sf/jxls/report/ReportManager.java 218B
  39. net/sf/jxls/report/ReportManagerImpl.java 1.38KB
  40. net/sf/jxls/report/ResultSetCollection.java 4.48KB
  41. net/sf/jxls/tag/
  42. net/sf/jxls/tag/AttributeInfo.java 836B
  43. net/sf/jxls/tag/BaseTag.java 549B
  44. net/sf/jxls/tag/Block.java 5.42KB
  45. net/sf/jxls/tag/ForEachTag.java 17KB
  46. net/sf/jxls/tag/IfTag.java 4.5KB
  47. net/sf/jxls/tag/JxTaglib.java 771B
  48. net/sf/jxls/tag/LoopStatus.java 368B
  49. net/sf/jxls/tag/OutTag.java 4.49KB
  50. net/sf/jxls/tag/OutlineTag.java 2.24KB
  51. net/sf/jxls/tag/Point.java 2.01KB
  52. net/sf/jxls/tag/SQLTag.java 4.91KB
  53. net/sf/jxls/tag/Tag.java 740B
  54. net/sf/jxls/tag/TagContext.java 1.88KB
  55. net/sf/jxls/tag/TagInfo.java 984B
  56. net/sf/jxls/tag/TagLib.java 148B
  57. net/sf/jxls/tag/TaglibXMLParser.java 424B
  58. net/sf/jxls/tag/jx-core.xml 2.23KB
  59. net/sf/jxls/transformation/
  60. net/sf/jxls/transformation/BaseTransformation.java 1.83KB
  61. net/sf/jxls/transformation/BlockTransformation.java 2.22KB
  62. net/sf/jxls/transformation/DuplicateTransformation.java 4.27KB
  63. net/sf/jxls/transformation/DuplicateTransformationByColumns.java 3.85KB
  64. net/sf/jxls/transformation/RemoveTransformation.java 1.44KB
  65. net/sf/jxls/transformation/ResultTransformation.java 3.39KB
  66. net/sf/jxls/transformation/ShiftTransformation.java 2.97KB
  67. net/sf/jxls/transformation/Transformation.java 428B
  68. net/sf/jxls/transformation/TransformationType.java 648B
  69. net/sf/jxls/transformer/
  70. net/sf/jxls/transformer/BaseRowTransformer.java 2.6KB
  71. net/sf/jxls/transformer/CellTransformer.java 7.38KB
  72. net/sf/jxls/transformer/ChainTransformer.java 2.96KB
  73. net/sf/jxls/transformer/CollectionRowTransformer.java 9.04KB
  74. net/sf/jxls/transformer/Configuration.java 8.96KB
  75. net/sf/jxls/transformer/MergedRegion.java 1KB
  76. net/sf/jxls/transformer/Row.java 7.82KB
  77. net/sf/jxls/transformer/RowCollection.java 4.76KB
  78. net/sf/jxls/transformer/RowTransformer.java 621B
  79. net/sf/jxls/transformer/Sheet.java 3.39KB
  80. net/sf/jxls/transformer/SheetTransformer.java 15.38KB
  81. net/sf/jxls/transformer/SimpleRowTransformer.java 3.21KB
  82. net/sf/jxls/transformer/TagRowTransformer.java 1.29KB
  83. net/sf/jxls/transformer/Workbook.java 3.38KB
  84. net/sf/jxls/transformer/XLSTransformer.java 27.54KB
  85. net/sf/jxls/util/
  86. net/sf/jxls/util/FormulaUtil.java 1.91KB
  87. net/sf/jxls/util/GroupData.java 599B
  88. net/sf/jxls/util/ReportUtil.java 5.35KB
  89. net/sf/jxls/util/SheetHelper.java 3.08KB
  90. net/sf/jxls/util/TagBodyHelper.java 11.05KB
  91. net/sf/jxls/util/Util.java 46.92KB
0评论
提交 加载更多评论
其他资源 基于JAVA的共享汽车管理系统(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的共享汽车管理系统是一个高效、易用的汽车共享解决方案,它包括管理后台和用户网页端,支持管理员和普通用户角色。系统主要功能模块包括汽车信息管理,允许管理员添加、编辑和删除汽车信息;汽车投放管理,用于控制汽车的投放数量和投放地点;汽车入库管理,记录汽车的入库时间和状态;汽车订单管理,用户可以查看、预订和取消订单;以及汽车归还管理,记录用户归还汽车的时间和状态。整个系统采用前后端分离的架构,前端使用Vue.js进行开发,后端使用SpringBoot框架,保证了系统的高性能和可扩展性。 演示录屏:https://www.bilibili.com/video/BV1xx4y187t5 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
错误代码提问英雄哥错误代码提问英雄哥错误代码提问英雄哥
错误代码提问英雄哥错误代码提问英雄哥错误代码提问英雄哥
基于JAVA的智慧图书管理系统(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的智慧图书管理系统是一个高效、易用的图书管理解决方案,它分为用户前台和管理后台两个部分,以满足不同角色的需求。用户前台主要面向普通用户,提供资料信息浏览、公告信息查看、论坛交流等功能,使用户能够方便地获取所需信息并参与社区互动。管理后台则为管理员提供了全面的图书管理功能,包括资料信息的增删改查、公告信息的发布与编辑、论坛管理以及资料类型的分类与维护等。整个系统采用现代化的前后端分离架构,前端使用Vue.js框架实现动态交互和用户友好的界面设计,后端则基于SpringBoot框架提供稳定、高效的数据处理和业务逻辑支持,确保系统的高性能和可扩展性。 演示录屏:https://www.bilibili.com/video/BV18f421U7GG 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
基于JAVA的智慧图书管理系统(Vue.js+SpringBoot+MySQL) 基于JAVA的智慧图书管理系统(Vue.js+SpringBoot+MySQL) 基于JAVA的智慧图书管理系统(Vue.js+SpringBoot+MySQL)
C#数据库连接SqlServer源码示例
源码包括,C#基础练习,数据类型(数组、字符串、类型转换、枚举、列表、字典)、语句结构、ADO.NET,案例源码
基于JAVA的作业管理系统(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的作业管理系统是一个功能全面、易于使用的在线教育平台,旨在提高教育效率和质量。该系统为管理员、学生和教师提供了不同的角色权限,以满足不同用户的需求。管理员可以进行系统设置、用户管理和权限分配,确保系统的安全和稳定运行。学生模块允许学生查看课程信息、提交作业、查看成绩和反馈,以及与教师进行在线交流。教师模块则提供了作业发布、成绩评定、学生管理等功能,方便教师高效地进行教学工作。此外,系统还包括班级信息模块,方便教师和学生查看班级成员和课程安排。作业提交模块支持多种文件格式,方便学生提交作业,同时教师可以在线批改和反馈。整个系统采用现代化的前端技术Vue.js和后端框架SpringBoot,保证了系统的高性能和良好的用户体验。 演示录屏:https://www.bilibili.com/video/BV1y1421U7cG 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
基于JAVA的新闻稿件管理系统(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的新闻稿件管理系统是一个功能全面、易于使用的新闻发布和管理平台。该系统分为用户前台和管理后台两部分,分别针对不同的用户角色提供定制化的服务。管理员、记者和审批员都可以在这个系统中找到适合自己的功能模块。 用户前台主要提供新闻浏览、搜索和分类查看等功能,方便用户快速获取感兴趣的新闻信息。而管理后台则为管理员、记者和审批员提供了丰富的管理功能。管理员可以通过记者管理模块对记者进行添加、编辑和删除等操作,确保记者团队的高效运作。审批员模块则允许审批员对提交的新闻稿件进行审核、修改和发布,保证新闻内容的质量和合规性。 整个系统采用Vue.js作为前端框架,提供了良好的用户交互体验和响应速度。后端则采用SpringBoot框架,保证了系统的稳定性和可扩展性。通过前后端分离的开发模式,使得系统更加灵活和易于维护。 演示录屏:https://www.bilibili.com/video/BV13x421D7Gh 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
基于JAVA的新闻稿件管理系统(Vue.js+SpringBoot+MySQL) 基于JAVA的新闻稿件管理系统(Vue.js+SpringBoot+MySQL)
磁盘空间分析器-SpaceSniffer-v1.3.0.2.zip
磁盘空间分析器-SpaceSniffer-v1.3.0.2.zip
DzzOffice 小胡版,基于官方的DzzOffice进行二次开发
DzzOffice是一款开源的办公套件,旨在为企业和团队提供类似于“Google企业应用套件”和“微软Office365”的协同办公平台。它由多款开源办公应用组成,用户可根据需求选择和安装,实现高度灵活和可定制。 DzzOffice不仅是一个云存储与应用管理工具,还具备强大的文件共享功能和丰富的成员权限管理,可以用于个人、团队网盘以及企业OA等场景。通过简单部署,可接入多种云存储,实现在线协同办公,提高工作效率。此外,DzzOffice还集成了大量的其他开源工具,如在线压缩、解压、媒体文件预览和文档预览与编辑等,充分展示了开源程序的多样化利用。并通过接入各类型web应用,使平台的功能能够得到无限扩展。 企业可根据需求选择单一或多款工具组合,并设置默认登录工具,使其既强大又灵活,适用于各种规模的企业和团队。