采用解析sheet.xml方式删除超链接,缺点是要打开文件2次,代码如下:
public void removeExcel2007AllHyperLink(String filePath) throws Exception { OPCPackage ocPkg = OPCPackage.open(new FileInputStream(filePath)); Workbook wb = new XSSFWorkbook(ocPkg); int totalSheet = wb.getNumberOfSheets(); String savePath = "f:/saveFile/temp/sys_xlsx_"+ System.currentTimeMillis() + ".xlsx"; CellStyle cellStype=wb.createCellStyle(); Font defaultFont = wb.createFont(); defaultFont.setColor(IndexedColors.BLACK.getIndex()); defaultFont.setUnderline(Font.U_NONE); cellStype.setFont(defaultFont); for (int i = 0; i < totalSheet; i++) { Sheet sheet = wb.getSheetAt(i); int rowCount = sheet.getLastRowNum(); for (int r = 0; r <= rowCount; r++) { Row row = sheet.getRow(r); if (row != null) { int lastCellNum = row.getLastCellNum(); Cell cell = null; for (int c = 0; c <= lastCellNum; c++) { cell = row.getCell(c); if (cell == null) { continue; } Hyperlink hylink = cell.getHyperlink(); if (hylink != null) { RichTextString richStr = new XSSFRichTextString(cell .getRichStringCellValue().getString()); richStr.applyFont(defaultFont); cell.setCellValue(richStr); } } } } } saveWorkBook(wb, savePath); ocPkg = OPCPackage.open(new FileInputStream(savePath)); for (int sheetIndex = 0; sheetIndex < totalSheet; sheetIndex++) { List<PackagePart> rs = ocPkg.getPartsByName(Pattern .compile("/xl/worksheets/sheet" + (sheetIndex + 1) + "\\.xml")); for (PackagePart pkgPart : rs) { if (pkgPart instanceof ZipPackagePart) { ZipPackagePart zipPart = (ZipPackagePart) pkgPart; Document doc = getDocument(zipPart.getInputStream()); if (doc != null) { NodeList hyperlinks = doc .getElementsByTagName("hyperlinks"); for (int i = hyperlinks.getLength() - 1; i >= 0; i--) { Node hyperlink = hyperlinks.item(i); hyperlink.getParentNode().removeChild(hyperlink); } StreamHelper.saveXmlInStream(doc, zipPart.getOutputStream()); } } } } wb = new XSSFWorkbook(ocPkg); saveWorkBook(wb, savePath); } public Document getDocument(InputStream inStream) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; Document doc = null; try { db = dbf.newDocumentBuilder(); doc = db.parse(inStream); } catch (Exception e) { e.printStackTrace(); } return doc; } public void saveWorkBook(Workbook wb, String filePath) throws Exception { FileOutputStream fileOut = new FileOutputStream(filePath); wb.write(fileOut); fileOut.close(); }
全文完。
相关推荐
Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx, .xls)、Word(.docx)和PowerPoint(.pptx)。在这个“poi帮助文档附带poi操作excel例子”中,我们可以深入学习如何使用...
例如,以下是一个简单的Java代码示例,演示了如何使用Apache POI读取Excel 2007文件: ```java import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.File;...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI 提供了丰富的API来读取、创建和修改这些文件。在标题和描述中提到的"POI操作excel的所有jar包...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,Apache POI提供了一种强大的API,允许开发者读取、写入和修改这些文件。标题提到的"poi导入导出...
本篇文章将深入探讨如何使用Apache POI库进行Excel操作,包括读取、写入、新建、删除以及修改Excel中的样式。 首先,我们需要在Java项目中引入Apache POI的jar包。通常,这涉及到下载Apache POI的最新版本,并将其...
总之,Apache POI的poi-4.0.1版本是处理Excel文件的强大工具,无论你是要进行简单的数据导入导出,还是复杂的格式设定和计算,都能提供高效、灵活的支持。在Java环境中,它是处理Excel文档的首选库之一。
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI提供了一套丰富的API,使得开发者可以方便地创建、读取和修改这些文件。"poi excel 3.2 jar包...
### POI Excel 操作知识点详解 #### 一、概述 Apache POI 是一款非常强大的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel (`.xls` 和 `.xlsx`)。本篇文档将详细介绍如何使用 POI 的 HSSF (针对 .xls ...
Apache POI 是一款开源的Java库,用于读写Microsoft Office格式的文件,特别是Excel(.xls和.xlsx)文件。在给定的资源中,我们有五个相关的jar包,包括两个版本的poi-3.7.jar,两个不同部分的OOXML支持(poi-ooxml-...
标题中的“poi 定制excel”指的是使用Apache POI库来定制化创建和操作Microsoft Excel文件。Apache POI是Java领域广泛使用的库,它允许开发者读取、写入和修改MS Office格式的文件,包括Excel。这篇博文链接(虽然...
- **高级功能**:POI支持复杂的Excel特性,如数据验证、超链接、图表、图片插入、自定义样式等。还可以处理Excel的宏和VBA。 - **性能优化**:由于.xlsx格式的复杂性,处理大型.xlsx文件时需要注意内存管理。可以...
3. **XSSF (XML Spreadsheet Format)**: 针对Excel 2007引入的新XML格式(.xlsx),XSSF是Apache POI中用于处理这个新格式的模块。它基于OOXML规范,能够处理更复杂的功能,如图表、数据验证、样式等。 4. **poi-...
6. **高级特性**:POI还支持图表、图片、超链接、数据验证等功能,使得Java程序可以创建复杂的Excel文件。 在实际开发中,为了使用Apache POI,你需要将提供的jar包添加到项目的类路径中。如果你使用的是Maven或...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx)。在Java环境中,Apache POI 提供了API来创建、修改和读取Excel文件。"poi操作表格需要的所有包 包括操作xlsx"这个标题...
8. **兼容性**:由于支持Office 2007及更高版本,Apache POI可以处理更复杂的Excel特性,如多重工作表、超链接、条件格式等。 使用"poi-3.10.1.jar",开发者可以构建强大的办公自动化工具,实现数据导入导出、报表...
1. `poi-ooxml-schemas-3.7-20101029.jar`: 这个库包含了Open XML(OOXML)的模式定义,用于处理Excel 2007及更高版本(XLSX)文件。OOXML是微软推出的新文件格式标准,比BIFF更复杂但功能更强大。 2. `poi-3.7-...
1. **HSSF和XSSF**: HSSF是处理旧版Excel文件(.xls,BIFF8格式)的API,而XSSF则是处理Excel 2007及以后版本的XML格式(.xlsx)文件的API。这两个接口提供了创建、修改和读取工作簿、工作表、单元格等的基本操作。 ...
8. **高级特性**: 包括图表、图片、超链接、数据验证、条件格式等复杂功能在POI 3.17中也得到了支持,使得开发者可以创建功能齐全的Excel文件。 9. **读取和写入**: POI提供了一套完整的API,用于读取现有Excel文件...
https://sisi111111.iteye.com/blog/1667219" 是一个指向InfoQ平台上的博客文章,虽然具体内容没有提供,但通常这类博客会详细介绍如何使用Apache POI来操作Excel文件,包括创建、读取、更新和删除工作表数据,以及...
通过深入学习"poi_3.8_API"提供的CHM文档,你将能够熟练地利用Apache POI处理各种Excel任务,无论是简单的数据导入导出,还是复杂的公式计算和报表生成。确保查看API文档中的详细示例和方法描述,以便更好地理解和...