`
53873039oycg
  • 浏览: 842019 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[简单]poi删除excel 2007超链接

    博客分类:
  • poi
 
阅读更多

      采用解析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();
	}

   全文完。

 

分享到:
评论

相关推荐

    poi帮助文档附带poi操作excel例子

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx, .xls)、Word(.docx)和PowerPoint(.pptx)。在这个“poi帮助文档附带poi操作excel例子”中,我们可以深入学习如何使用...

    excel,2007

    例如,以下是一个简单的Java代码示例,演示了如何使用Apache POI读取Excel 2007文件: ```java import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.File;...

    POI操作excel的所有jar包(3.7-3.10)+dom4j.jar+xmlbean.jar

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI 提供了丰富的API来读取、创建和修改这些文件。在标题和描述中提到的"POI操作excel的所有jar包...

    poi导入导出Excel表格的所以jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,Apache POI提供了一种强大的API,允许开发者读取、写入和修改这些文件。标题提到的"poi导入导出...

    poi操作excel所需jar包和实例

    本篇文章将深入探讨如何使用Apache POI库进行Excel操作,包括读取、写入、新建、删除以及修改Excel中的样式。 首先,我们需要在Java项目中引入Apache POI的jar包。通常,这涉及到下载Apache POI的最新版本,并将其...

    poi-4.0.1 excel处理包

    总之,Apache POI的poi-4.0.1版本是处理Excel文件的强大工具,无论你是要进行简单的数据导入导出,还是复杂的格式设定和计算,都能提供高效、灵活的支持。在Java环境中,它是处理Excel文档的首选库之一。

    poi excel 3.2 jar包 与API

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,POI提供了一套丰富的API,使得开发者可以方便地创建、读取和修改这些文件。"poi excel 3.2 jar包...

    POI_excel的操作

    ### POI Excel 操作知识点详解 #### 一、概述 Apache POI 是一款非常强大的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel (`.xls` 和 `.xlsx`)。本篇文档将详细介绍如何使用 POI 的 HSSF (针对 .xls ...

    poi3.7和对应依赖jar包操作excel

    Apache POI 是一款开源的Java库,用于读写Microsoft Office格式的文件,特别是Excel(.xls和.xlsx)文件。在给定的资源中,我们有五个相关的jar包,包括两个版本的poi-3.7.jar,两个不同部分的OOXML支持(poi-ooxml-...

    poi 定制excel

    标题中的“poi 定制excel”指的是使用Apache POI库来定制化创建和操作Microsoft Excel文件。Apache POI是Java领域广泛使用的库,它允许开发者读取、写入和修改MS Office格式的文件,包括Excel。这篇博文链接(虽然...

    jxl poi java操作excel

    - **高级功能**:POI支持复杂的Excel特性,如数据验证、超链接、图表、图片插入、自定义样式等。还可以处理Excel的宏和VBA。 - **性能优化**:由于.xlsx格式的复杂性,处理大型.xlsx文件时需要注意内存管理。可以...

    Java操作Excel读写的POI包

    3. **XSSF (XML Spreadsheet Format)**: 针对Excel 2007引入的新XML格式(.xlsx),XSSF是Apache POI中用于处理这个新格式的模块。它基于OOXML规范,能够处理更复杂的功能,如图表、数据验证、样式等。 4. **poi-...

    操作excel2007和2003所要用到的jar包,很全的

    6. **高级特性**:POI还支持图表、图片、超链接、数据验证等功能,使得Java程序可以创建复杂的Excel文件。 在实际开发中,为了使用Apache POI,你需要将提供的jar包添加到项目的类路径中。如果你使用的是Maven或...

    poi操作表格需要的所有包 包括操作xlsx

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx)。在Java环境中,Apache POI 提供了API来创建、修改和读取Excel文件。"poi操作表格需要的所有包 包括操作xlsx"这个标题...

    最新poi:poi-3.10.1.jar

    8. **兼容性**:由于支持Office 2007及更高版本,Apache POI可以处理更复杂的Excel特性,如多重工作表、超链接、条件格式等。 使用"poi-3.10.1.jar",开发者可以构建强大的办公自动化工具,实现数据导入导出、报表...

    poi相关jar包

    1. `poi-ooxml-schemas-3.7-20101029.jar`: 这个库包含了Open XML(OOXML)的模式定义,用于处理Excel 2007及更高版本(XLSX)文件。OOXML是微软推出的新文件格式标准,比BIFF更复杂但功能更强大。 2. `poi-3.7-...

    poi4.1.2.zip

    1. **HSSF和XSSF**: HSSF是处理旧版Excel文件(.xls,BIFF8格式)的API,而XSSF则是处理Excel 2007及以后版本的XML格式(.xlsx)文件的API。这两个接口提供了创建、修改和读取工作簿、工作表、单元格等的基本操作。 ...

    poi-3.17.zip

    8. **高级特性**: 包括图表、图片、超链接、数据验证、条件格式等复杂功能在POI 3.17中也得到了支持,使得开发者可以创建功能齐全的Excel文件。 9. **读取和写入**: POI提供了一套完整的API,用于读取现有Excel文件...

    poi的jar文件

    https://sisi111111.iteye.com/blog/1667219" 是一个指向InfoQ平台上的博客文章,虽然具体内容没有提供,但通常这类博客会详细介绍如何使用Apache POI来操作Excel文件,包括创建、读取、更新和删除工作表数据,以及...

    poi_3.8_API

    通过深入学习"poi_3.8_API"提供的CHM文档,你将能够熟练地利用Apache POI处理各种Excel任务,无论是简单的数据导入导出,还是复杂的公式计算和报表生成。确保查看API文档中的详细示例和方法描述,以便更好地理解和...

Global site tag (gtag.js) - Google Analytics