How can I create a Microsoft.Office.Interop.Word.Document
object from byte array, without saving it to disk using C#?
public static int GetCounterOfCharacter(byte[] wordContent)
{
Application objWord = new Application();
Microsoft.Office.Interop.Word.Document objDoc = new Document();
//objDoc = objWord.Documents.Open(("D:/Test.docx"); i want to create document from byte array "wordContent"
return objDoc.Characters.Count;
}
There is no straight-forward way of doing this as far as I know. The Word interop libs are not able to read from a byte stream. Unless you are working with huge (or a huge amount of) files, I would recommend simply using a tmp file:
Application app = new Application();
byte[] wordContent = GetBytesInSomeWay();
var tmpFile = Path.GetTempFileName();
var tmpFileStream = File.OpenWrite(tmpFile);
tmpFileStream.Write(wordContent, 0, wordContent.Length);
tmpFileStream.Close();
app.Documents.Open(tmpFile);
I know this isn't the answer you're looking for, but in a case like this (where doing what you really want to do requires quite a bit of time and fidgeting) it might be worth considering whether or not development time outweighs runtime performance.
If you still want to look into a way to solve it the way you intend it to, I'd recommend the answers in this thread.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With