diff options
author | Nick Burch <nick@apache.org> | 2007-12-27 11:52:12 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2007-12-27 11:52:12 +0000 |
commit | 7d409e8139c26f46a1020e55f88b7b13623f5814 (patch) | |
tree | 27796c7db64bae81777211c9c8da8ffe9395db22 /src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java | |
parent | bd40f5a0188e871ff21e4e61ef7c0a052fd72fe3 (diff) | |
download | poi-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.java | 35 |
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); + } } |