Convert WinWord Document to Blob


I have used a Winword Control to display the word document in a windows forms. Couple of my friends asked me how to save the document as a blob in to a database. So I thought of putting an article about it. The code is very Simple. Just use file system to convert the document to array of bytes[]

try
{
   
//Delete the doc file used for Saving if already exists
   
FileInfo mySaveFile = new FileInfo(@"C:\mysavefilename.doc");
   
if (mySaveFile != null)
   
{
       
mySaveFile.Delete();
   
}
   
object overWriteExisting = false;
   
object refMissing = Missing.Value;
   
object saveFileName = _filenameSave;
   
this.myWinWordControl.document.SaveAs(ref saveFileName, ref refMissing, ref refMissing, ref refMissing, ref refMissing, ref 
    refMissing,ref refMissing, ref refMissing, ref refMissing, ref refMissing, ref refMissing);
    //Show Blank document so that the current loaded file gets released
   
ShowBlankDocument();
   
//convert the doc file to blob.
   
MyDS.mYRow row = null;
   
FileStream fls;
   
fls = new FileStream(_filenameSave, FileMode.Open, FileAccess.Read);
   
//a byte array to read the doc
   
byte[] blobDoc = new byte[fls.Length];
   
fls.Read(blobDoc, 0, System.Convert.ToInt32(fls.Length));
   
fls.Close();
   
if (this._presenter.IsNewRecord)
   
{
       
_mYDS = new mYDS();
       
row = _mYDS.MyTable.NewRow();
       
row.MY_DOC = blobDoc;
       
return _presenter.AddRecord(row);
   
}
   
else
   
{
       
row = mYDS.Rows[0];
       
row.MY_DOC = blobDoc;
       
return _presenter.UpdateRecord(row);
   
}
}

catch (Exception exp)
{
   
_ErrorWindow.Show(exp);
   
return false;
}
 
The DataSet row conataining the blob can be saved with regular saving technique using Enterprise Libararies DAL.


Similar Articles