1
私は、ワードドキュメント内のハイパーリンクを修正しようとしています。ハイパーリンクは、もともと外部の文書内のブックマークを指しています。私がしたいのは、同じアンカーとしての内部ブックマークを指すように変更することです。openxmlでハイパーリンクを変更する
私が使用しているコードは次のとおりです。変数は何時に表示されますが、保存されたドキュメントを見ると元のようになります。
私のチャンスが持続しない理由は何ですか?明示的
// read file specified in stream
MemoryStream stream = new MemoryStream(File.ReadAllBytes("C:\\TEMPO\\smartbook\\text1.docx"));
WordprocessingDocument doc = WordprocessingDocument.Open(stream, true);
MainDocumentPart mainPart = doc.MainDocumentPart;
// The first hyperlink -- it happens to be the one I want to modify
Hyperlink hLink = mainPart.Document.Body.Descendants<Hyperlink>().FirstOrDefault();
if (hLink != null)
{
// get hyperlink's relation Id (where path stores)
string relationId = hLink.Id;
if (relationId != string.Empty)
{
// get current relation
HyperlinkRelationship hr = mainPart.HyperlinkRelationships.Where(a => a.Id == relationId).FirstOrDefault();
if (hr != null)
{
// remove current relation
mainPart.DeleteReferenceRelationship(hr);
// add new relation with relation
// mainPart.AddHyperlinkRelationship(new Uri("C:\\TEMPO\\smartbook\\test.docx"), false, relationId);
}
}
// change hyperlink attributes
hLink.DocLocation = "#";
hLink.Id = "";
hLink.Anchor = "TEST";
}
// save stream to a new file
File.WriteAllBytes("C:\\TEMPO\\smartbook\\test.docx", stream.ToArray());
doc.Close();
ありがとうございました! Wordでは、内部ブックマークにハイパーリンクを追加すると、URLはなく、テキストの前に「#」だけが表示されます。 "#Bookmark" "C:\ TEMPO \ smartbook \ test.docx"を指定する代わりに、自分自身でURLを作成する方法を知っていますか? –