Hell All,
Мое требование - открыть документ Microsoft Word и изменить некоторое содержимое, а затем сохранить этот документ как Microsoft Word.
Для этого я использую OpenXML и добился этого, но после модификации, когда я сохраняю как новый документ, он работает, но я хочу изменить документ в виде потока Microsoft Word, чтобы я мог сохранить его на Amazon S3.
В приведенном ниже коде «fuFile» - это FileUploadControl, и я использую существующий документ Microsoft Word, который необходимо изменить.
protected void btnSubmit_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
fuFile.PostedFile.InputStream.CopyTo(ms);
using (WordprocessingDocument document = WordprocessingDocument.Open(ms, true))
{
foreach (var para in document.MainDocumentPart.Document.Body.Elements<Paragraph>())
{
foreach (var run in para.Elements<Run>())
{
foreach (var text in run.Elements<Text>())
{
if (text.Text.Contains("<content to find>"))
{
text.Text = "content to replace";
}
}
}
}
document.SaveAs(string.Format("d:\\modified_{0}.docx", DateTime.Now.Ticks));
//using (var fileStream = File.Create(string.Format("d:\\modified_{0}.docx", DateTime.Now.Ticks)))
//{
// using (StreamReader sr = new StreamReader(document.MainDocumentPart.GetStream()))
// {
// fileStream.Seek(0, SeekOrigin.Begin);
// sr.BaseStream.CopyTo(fileStream);
// }
//}
}
}
Здесь, когда я сохраняю измененный документ как новый документ, он отлично работает и открывается в Microsoft Word, но в коде комментария, где я создаю новый файл и копирую содержимое, файл сохраняется как .docx, но не открывается в Microsoft Word.
Есть идеи, как создать поток из измененного документа и сохранить его в Amazon S3, чтобы после загрузки он по-прежнему открывался в Microsoft word?