Ich schreibe ein Projekt, mit dem Sie .docx-Dokumente bearbeiten (ich habe eine Vorlage, die bearbeitet werden muss) direkt von der Website und speichern Sie sie dein Computer. Ich habe ein Problem mit dem Speichern aller Informationen, die ich bereits in der Datei bearbeitet habe.Bearbeiten und Speichern von .docx in ASP.NET-Programm mit OpenXML & MemoryStream
using (MemoryStream memoryStream = new MemoryStream())
{
memoryStream.Write(byteArray, 0, byteArray.Length);
using (WordprocessingDocument wDoc = WordprocessingDocument.Open(memoryStream, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
var senderData = Sender_Textbox.Text;
var receiverData = Receiver_Textbox.Text;
var subjectData = Subject_Textbox.Text;
var contentData = Content_Textbox.Text;
docText = ReplaceData(docText, "receiver", receiverData);
docText = ReplaceData(docText, "sender", senderData);
docText = ReplaceData(docText, "subject", subjectData);
docText = ReplaceData(docText, "content", contentData);
using (StreamWriter sw = new StreamWriter(wDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
Session["ByteArray"] = memoryStream.ToArray();
}
static string ReplaceData(string docText, string oldText, string newText)
{
var regexText = new Regex(oldText);
return regexText.Replace(docText, newText);
}
verwendete ich this Tutorial von Office-Dev Center, es funktioniert gut im Offline-Lösung. Ein Teil von StreamWriter funktioniert nicht und ich lade ein Dokument herunter, das überhaupt keine Änderungen enthält. Wie kann ich alle Informationen, die ich online bearbeitet habe, in wDoc speichern?