コード例 #1
0
        public void ExceptionIfNotWritable()
        {
            using (var stream = GetStream(TestFiles.malformed_uri_xlsx))
            {
                var settings = new OpenSettings
                {
                    RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) => null),
                };

                var exception = Assert.Throws <OpenXmlPackageException>(() => SpreadsheetDocument.Open(stream, false));

                Assert.IsType <UriFormatException>(exception.InnerException);
            }
        }
コード例 #2
0
        public void RewriteMalformedUri()
        {
            const string Rewritten = "http://error";
            const string Id        = "rId1";

            var Count = 0;

            using (var stream = GetStream(TestFiles.malformed_uri_xlsx, isEditable: true))
            {
                var settings = new OpenSettings
                {
                    RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) =>
                    {
                        Count++;
                        Assert.Equal(Id, id);
                        Assert.Equal("/xl/worksheets/_rels/sheet1.xml.rels", partUri.OriginalString);
                        Assert.Equal("mailto:one@", uri);

                        return(Rewritten);
                    }),
                };

                using (var doc = SpreadsheetDocument.Open(stream, true, settings))
                {
                    Assert.Equal(1, Count);

                    var worksheetPart         = Assert.Single(doc.WorkbookPart.WorksheetParts);
                    var hyperlinkRelationship = Assert.Single(worksheetPart.HyperlinkRelationships);
                    var worksheet             = Assert.IsType <Worksheet>(worksheetPart.RootElement);
                    var hyperlink             = Assert.Single(worksheet.Descendants <Hyperlink>());

                    Assert.Equal(Id, hyperlinkRelationship.Id);
                    Assert.Equal(Rewritten, hyperlinkRelationship.Uri.OriginalString);

                    Assert.Equal(Id, hyperlink.Id);
                }
            }
        }
コード例 #3
0
        public void RewriteMalformedUriLong()
        {
            const string Rewritten = "http://error";
            const string Id        = "rId1";

            var Count = 0;

            using var stream = GetStream(TestFiles.malformed_uri_long_xlsx, isEditable: true);

            var settings = new OpenSettings
            {
                RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) =>
                {
                    Count++;
                    Assert.Equal(Id, id);
                    Assert.Equal("/xl/worksheets/_rels/sheet1.xml.rels", partUri.OriginalString);
                    Assert.Equal("mailto:[email protected];%[email protected];%[email protected];%[email protected];%[email protected];%[email protected]?subject=Unsubscribe%20Request&body=Please%20unsubscribe%20me%20from%20all%20future%20communications", uri);

                    return(Rewritten);
                }),
            };

            using var doc = SpreadsheetDocument.Open(stream, true, settings);

            Assert.Equal(1, Count);

            var worksheetPart         = Assert.Single(doc.WorkbookPart.WorksheetParts);
            var hyperlinkRelationship = Assert.Single(worksheetPart.HyperlinkRelationships);
            var worksheet             = Assert.IsType <Worksheet>(worksheetPart.RootElement);
            var hyperlink             = Assert.Single(worksheet.Descendants <Hyperlink>());

            Assert.Equal(Id, hyperlinkRelationship.Id);
            Assert.Equal(Rewritten, hyperlinkRelationship.Uri.OriginalString);

            Assert.Equal(Id, hyperlink.Id);
        }