Я обращаюсь к базе данных Ms Access
через C#
.Я могу прочитать все поля.Проблема, которую я получаю, заключается в том, что при чтении файлов .txt
и .doc
, которые хранятся в поле OLE Object
таблицы, многие дополнительные ненужные символы также читаются до и после фактического текста, например - * 1006.*.
Мой код на C # похож на `` 1009 *
/*Read from the query and write in a temporary file*/
var oleBytes = (Byte[])Cmd.ExecuteScalar();
MemoryStream ms = new MemoryStream();
ms.Write(oleBytes, 0, oleBytes.Length - 0);
var file = Path.GetTempFileName();
using (var fileStream = File.OpenWrite(file))
{
var buffer = ms.GetBuffer();
fileStream.Write(buffer, 0, (int)ms.Length);
}
`
Затем прочитайте этот временный файл как слово document-`
Microsoft.Office.Interop.Word.ApplicationClass wordObject = new ApplicationClass();
object fpath = file; //this is the path
object nullobject = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document docs = wordObject.Documents.Open
(ref fpath, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject);
docs.ActiveWindow.Selection.WholeStory();
docs.ActiveWindow.Selection.Copy();
IDataObject iData = Clipboard.GetDataObject();
if (iData != null)
data = iData.GetData(DataFormats.Text).ToString();
`
Не знаете, что происходит?Читаю ли я метаданные полей также из таблицы?Если так, то как этого избежать?Какой эффективный способ прочитать поле OLE Object
, в котором хранятся файлы, отличные от изображений?