aboutsummaryrefslogtreecommitdiffstats
path: root/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2007-12-27 11:52:12 +0000
committerNick Burch <nick@apache.org>2007-12-27 11:52:12 +0000
commit7d409e8139c26f46a1020e55f88b7b13623f5814 (patch)
tree27796c7db64bae81777211c9c8da8ffe9395db22 /src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
parentbd40f5a0188e871ff21e4e61ef7c0a052fd72fe3 (diff)
downloadpoi-7d409e8139c26f46a1020e55f88b7b13623f5814.tar.gz
poi-7d409e8139c26f46a1020e55f88b7b13623f5814.zip
Support getting the low level sheet objects back for an xlsx document
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@607043 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java')
-rw-r--r--src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java b/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
index f8f74e0943..a7a17f9421 100644
--- a/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
+++ b/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
@@ -29,6 +29,9 @@ import org.openxml4j.exceptions.OpenXML4JException;
import org.openxml4j.opc.Package;
import org.openxml4j.opc.PackageAccess;
import org.openxml4j.opc.PackagePart;
+import org.openxml4j.opc.PackagePartName;
+import org.openxml4j.opc.PackageRelationship;
+import org.openxml4j.opc.PackagingURIHelper;
/**
* Parent class of the low level interface to
@@ -76,8 +79,28 @@ public abstract class HXFDocument {
}
}
- public static Package openPackage(File f) throws InvalidFormatException {
- return Package.open(f.toString(), PackageAccess.READ_WRITE);
+ /**
+ * Retrieves the PackagePart for the given relation
+ * id. This will normally come from a r:id attribute
+ * on part of the base document.
+ * @param partId The r:id pointing to the other PackagePart
+ */
+ protected PackagePart getRelatedPackagePart(String partId) {
+ PackageRelationship rel =
+ basePart.getRelationship(partId);
+
+ PackagePartName relName;
+ try {
+ relName = PackagingURIHelper.createPartName(rel.getTargetURI());
+ } catch(InvalidFormatException e) {
+ throw new InternalError(e.getMessage());
+ }
+
+ PackagePart part = container.getPart(relName);
+ if(part == null) {
+ throw new IllegalArgumentException("No part found for rel " + rel);
+ }
+ return part;
}
/**
@@ -87,4 +110,12 @@ public abstract class HXFDocument {
public Package getPackage() {
return container;
}
+
+ /**
+ * Returns an opened OOXML Package for the supplied File
+ * @param f File to open
+ */
+ public static Package openPackage(File f) throws InvalidFormatException {
+ return Package.open(f.toString(), PackageAccess.READ_WRITE);
+ }
}