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.