本文说使用 OpenXML SDK 时需要使用可调整大小的 MemoryStreams,并且示例代码可以正常工作。
但是,当我将示例 C# 代码翻译成 F# 时,文档保持不变:
open System.IO
open DocumentFormat.OpenXml.Packaging
open DocumentFormat.OpenXml.Wordprocessing
[<EntryPoint>]
let Main args =
let byteArray = File.ReadAllBytes "Test.docx"
use mem = new MemoryStream()
mem.Write(byteArray, 0, (int)byteArray.Length)
let para = new Paragraph()
let run = new Run()
let text = new Text("Newly inserted paragraph")
run.InsertAt(text, 0) |> ignore
para.InsertAt(run, 0) |> ignore
use doc = WordprocessingDocument.Open(mem, true)
doc.MainDocumentPart.Document.Body.InsertAt(para, 0) |> ignore
// no change to the document
use fs = new FileStream("Test2.docx", System.IO.FileMode.Create)
mem.WriteTo(fs)
0
当我使用时它工作正常WordprocessingDocument.Open("Test1.docx", true)
,但我想使用MemoryStream
. 我究竟做错了什么?