Ich greife auf eine Ms Access
Datenbank durch C#
. Ich kann alle Felder lesen. Das Problem, das ich bekomme, ist, während das Lesen .txt
und .doc
Dateien, die in OLE Object
Feld der Tabelle gespeichert sind, eine Menge von zusätzlichen Junk-Zeichen werden auch vor und nach dem eigentlichen Text gelesen wie- ÿÿÿÿ‡€ ÿÿÿÿÿÿÿÿˆ ÿÿÿÿÿÿÿÿ€ ˆˆˆˆˆˆˆˆ€ ÿÿÿÿÿÿÿÿþ
.Wie können Sie Junk-Zeichen entfernen, während Sie ein Word-Dokument lesen, das im Feld 'OLE-Objekt' in einer Zugriffsdatenbank über C# gespeichert ist?
i 8 @ñÿ 8 N o r m a l CJ _H aJ mH sH tH < [email protected]òÿ¡ <
D e f a u l t P a r a g r a p h F o n t … ÿÿÿÿ ( f p ³ ú ÿ A Ä M • À ' n î 0 q Œ Ï
Mein C# -Code ist wie- `
/*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);
}
`
Dann wie ein Wort 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();
`
Don diese temporäre Datei lesen‘ Weißt du, was schief läuft? Liest ich die Felder Metadaten auch aus der Tabelle? Wenn ja, wie vermeide ich das? Was wäre der effiziente Weg zum Lesen OLE Object
Feld, das andere Dateien als Bilder speichert?
Das OLE-Objekt in Access enthält einen problematischen Wrapper, wie Sie bemerkt haben. Sie können http://stackoverflow.com/questions/2874403/strip-ole-header-information-ms-access-sql-server hilfreich finden. – Fionnuala