Laden...

Kommentare aus Excel - Dateien auslesen

Erstellt von jan223 vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.511 Views
jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren
Kommentare aus Excel - Dateien auslesen

Hallo,

ich habe in Netz schon merere Verfahren entdeckt mit denem man Excel Dateien mit C# auslesen kann. Ist es irgendwie möglich auch die Kommentare, die man in Exceldateien hat auszulesen ?

Jan

jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren

Ich habe ein Programm geschrieben, das mittels oleDB Connection die Daten einer Excel Datei ausließt.
Der oleDB Adapter füllt dann seine Daten in eine DataTable, diese Daten kann ich dann in einem DataGrid oder einer einfachen Textbox anzeigen lassen. So weit so gut. Nun möchte ich nicht nur den Inhalt der Zelle sehen sondern auch den Kommentar der in Excel eingefügt wurde.

M
115 Beiträge seit 2003
vor 18 Jahren

Du mußt den Weg über das Excel Objekt Modell nehmen:

Also einen Verweis erstellen auf die Excel-Objekt Bibliothek.
(In meinem Fall Office 2003)

Folgender Code sollte Dir einen Startpunkt geben:
(Ich muß dich allerdings warnen, die Sache ist nicht sonderlich performant.)

Tschau, ba,ba und foi net,
Meli



using System;
using System.Collections.Generic;
using System.Text;

namespace ExcelAutomation
{
    class Program
    {
        static void Main(string[] args)
        {
            object mMissing = System.Reflection.Missing.Value;


            Excel.ApplicationClass EXCEL = new Excel.ApplicationClass();
           
     //Da C# keine optionale Argumente kennt, muß man für jeden Parameter
    // einen Wert angeben, besser wäre  es VB.Net zu nehmen

            EXCEL.Workbooks.Open(@"C:\Kommentar.xls", mMissing, mMissing, 
                mMissing, mMissing, mMissing, mMissing, mMissing, mMissing, 
                mMissing, mMissing, mMissing, mMissing, mMissing, mMissing);

           // Zelle mit dem Komentar
           Excel.Range rg = (Excel.Range) EXCEL.Cells[1, 1];

           //Kommentartext ausgeben
           if (rg.Comment !=null)
           {
               Console.WriteLine(rg.Comment.Text(mMissing, mMissing, mMissing));
  
           }
            

            Console.ReadLine();

            EXCEL = null;
            
           

        }
    }
}

Gernot Melichar

jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren

Mhh der Namespace wird nicht akzeptiert:

using System.Collections.Generic;

Der Typ oder Namespacename 'Generic' ist in der Klasse oder dem Namespace 'System.Collections' nicht vorhanden (fehlt ein Assemblyverweis?)

muss ich nochwas anderes einbinden ?

M
115 Beiträge seit 2003
vor 18 Jahren

Ich habeVS2005/Net2.0 für das Beispiel verwendet.Deshalb die Einbindung
des Generic Namespace.
Du kannst die Zeile einfach löschen.

Gernot Melichar

jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren

wenn ich die Zeile lösche dann kann er mit

Excel.ApplicationClass

nichts anfangen 😦

jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren

Jetzt gehts ! Ich hatte den Verweis auf Excel 11.0 vergessen ( sorry )

dann war da noch ein ein Fehler in der Pfadangabe C:\Kommentar.xls ..

Vielen Dank, Du warst eine große Hilfe !

M
115 Beiträge seit 2003
vor 18 Jahren

Welche Office Version benutzt Du? Bei mir unter Office2003/VS 2005 funktioniert
es einwandfrei. Ich referenziere die Microsoft Office 11.0 Object Library.
Probiere mal diesen Code:




using System;
using System.Text;

using Office = Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelAutomat
{
    class Program
    {
        static void Main(string[] args)
        {


            object mMissing = System.Reflection.Missing.Value;


            Excel.ApplicationClass EXCEL = new Excel.ApplicationClass();



            EXCEL.Workbooks.Open(@"C:\Kommentar.xls", mMissing, mMissing,
                mMissing, mMissing, mMissing, mMissing, mMissing, mMissing,
                mMissing, mMissing, mMissing, mMissing, mMissing, mMissing);


            Excel.Range rg = (Excel.Range)EXCEL.Cells[1, 1];


            if (rg.Comment != null)
            {
                Console.WriteLine(rg.Comment.Text(mMissing, mMissing, mMissing));

            }
            
          
        }
    }
}



Hoops, ich war wohl zu langsam....

Gernot Melichar

jan223 Themenstarter:in
460 Beiträge seit 2004
vor 18 Jahren

.. eine Frage habe ich noch:
Im Debug Verzeichniss liegt jetzt unter anderem die DLLInterop.Excel.dll ohne die das Programm nicht läuft.
Was kann ich tun, damit das das Programm auch ohne die DLL läuft, bzw wie kann ich erreichen das das Programm die DLL im C:\Windows\system32 Verzeichniss sucht ?

B
483 Beiträge seit 2005
vor 18 Jahren

Hallo, soweit ich weis gar nicht es soll so sein. Philosophie von .NET-raus aus dll-Hölle.
Gruss,
Boris