![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Jr. Member
![]() Registriert seit: 10.08.2004
Alter: 44
Beiträge: 33
|
![]() Hallo!
Ich habe folgendes Problem: Ich möchte mir von Office Dokumenten die Custom Properties anzeigen lassen. Habe mir dazu die dsofile.dll besorgt und in darauf in meinem ASP.net Projekt verwiesen. Es funktioniert alles bis auf dass dass ich nicht den Wert eines Custom Properties abfragen kann. Ich kann den Namen und den Typ des Props abfragen. Hier ist mein Code: private void Page_Load(object sender, System.EventArgs e) { try { DSOleFile.PropertyReader objPropReader = new DSOleFile.PropertyReaderClass(); ArrayList arrListDocuments = new ArrayList(); DirectoryInfo di = new DirectoryInfo("c:/temp"); FileInfo[] rgFiles = di.GetFiles("*.doc"); foreach(FileInfo objFileInfo in rgFiles) { System.IO.FileAttributes objAttrFile = System.IO.File.GetAttributes(objFileInfo.FullName) ; if ((objAttrFile & (System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System)) != 0) { // Response.Write(objFileInfo.Name + ": Hidden Datei "); } else { arrListDocuments.Add(objFileInfo.FullName); } } DSOleFile.DocumentProperties objDocumentProps; objDocumentProps = objPropReader.GetDocumentProperties(arrListDocumen ts[0].ToString()); DSOleFile.CustomProperties objCustProps; object ind = "Erste Eigenschaft"; Response.Write(objCustProps[ind].Name); Response.Write(objCustProps[ind].Value.ToString()); } catch(Exception ex) { Response.Write(ex.ToString()); } } Der Fehler tritt auf bei: Response.Write(objCustProps[ind].Value.ToString()); Ich bekomme die Meldung: Die Eigenschaft oder der Indexer "Value" wird von der Sprache nicht unterstützt wird. Versuchen Sie direkt die Accessor-Methoden "DSOleFile.CustomProperty.get_Value()" oder "DSOleFile.CustomProperty.set_Value(ref object)" aufzurufen. Wie kann ich auf die Customprops eines Dokumentes mit ASP.net/C# zugreifen? Hat da vielleicht schon einer Erfahrung damit? Danke für eure Hilfe Gerald |
![]() |
![]() |
![]() |
#2 |
Newbie
![]() Registriert seit: 04.01.2002
Beiträge: 1
|
![]() Hi,
probier's mal statt: Response.Write(objCustProps[ind].Value.ToString()); so: Response.Write(objDocumentProps.CustomProperties[ind].get_Value().ToString()); 'objCustProps' brauch ma nicht. mfg Robert |
![]() |
![]() |
![]() |
#3 |
Jr. Member
![]() Registriert seit: 10.08.2004
Alter: 44
Beiträge: 33
|
![]() Hat funktioniert, danke.
|
![]() |
![]() |
![]() |
#4 |
Jr. Member
![]() Registriert seit: 10.08.2004
Alter: 44
Beiträge: 33
|
![]() Hallo!
Habe ein weiteres Problem: Es ist kein Problem die Properties von Dateien welche sich auf meinem Rechner befinden anzuzeigen, will ich jedoch die Props von Dateien,welche sich auf einem Network Share befinden anzeigen, bekomme ich eine Fehlermeldung. Ich bekomme zwar eine Liste mit allen Dateien im Network Share,jedoch kann ich die Properties nicht auslesen. Hier ist der Code dazu: Code:
private void Page_Load(object sender, System.EventArgs e) { try { string strDirectory = @"\\test-server\temp"; DSOleFile.PropertyReader objPropReader = new DSOleFile.PropertyReaderClass(); ArrayList arrListDocuments = new ArrayList(); DirectoryInfo di = new DirectoryInfo(strDirectory); FileInfo[] rgFiles = di.GetFiles(); foreach(FileInfo objFileInfo in rgFiles) { System.IO.FileAttributes objAttrFile = System.IO.File.GetAttributes(objFileInfo.FullName); if ((objAttrFile & (System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System)) != 0) { // Response.Write(objFileInfo.Name + ": Hidden Datei "); } else { arrListDocuments.Add(objFileInfo.FullName); } } object[] objIndex = new object[2]; objIndex[0] = "Erste Eigenschaft"; objIndex[1] = "Zweite Eigenschaft"; string strFileName = ""; string strValue = ""; TableRow row = new TableRow(); TableCell cellName = new TableCell(); cellName.Text = "Document Name"; row.Cells.Add(cellName); for(int y = 0; y < objIndex.Length; y++) { TableCell cellPropName = new TableCell(); cellPropName.Text = objIndex[y].ToString(); row.Cells.Add(cellPropName); } row.BackColor = System.Drawing.Color.LightGray; myTable.Rows.Add(row); DSOleFile.DocumentProperties objDocumentProps; for(int i = 0; i < arrListDocuments.Count; i++) { strFileName = arrListDocuments[i].ToString(); objDocumentProps = objPropReader.GetDocumentProperties(strFileName); TableRow row1 = new TableRow(); TableCell cell = new TableCell(); cell.Text = arrListDocuments[i].ToString(); row1.Cells.Add(cell); for(int y = 0; y < objIndex.Length; y++) { strValue = "Nicht vorhanden"; DSOleFile.CustomProperties custProps = objDocumentProps.CustomProperties; strValue = objDocumentProps.CustomProperties[objIndex[y]].get_Value().ToString() + " "; TableCell cell2 = new TableCell(); cell2.Text = strValue; row1.Cells.Add(cell2); // Response.Write(objDocumentProps.CustomProperties[objIndex[y]].get_Value().ToString() + " "); } myTable.Rows.Add(row1); } // Response.Write(" "); } catch(Exception ex) { Response.Write(ex.ToString()); } } System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x80030002 (STG_E_FILENOTFOUND). Der Pfad zur Datei stimmt aber. Woran kann das liegen? Danke für eure Hilfe. Gerald |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|