Laden...

Excel-Arbeitsmappen in einer Listbox anzeigen

Erstellt von arakhsh_j vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.485 Views
A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren
Excel-Arbeitsmappen in einer Listbox anzeigen

Hallo,

ich habe folgendes Problem, ich möchte die Arbeitsmappen einer Excel-Datei als "Items" in einem Listbox anzeigen lassen, und dann durch klicken auf die entsprechende Mappe die Datei bearbeiten können.

freue mich auf eure Antworten und Tipps.


public static void excel_auruf(string file)
    {
      Worksheet ws;

      Microsoft.Office.Interop.Excel.Application excel = null;
     
      string zellwert;
      string datei = file;

      Workbook wb = null;
     
     try
     {
      // Excel starten
      excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
      excel.Visible = false;

      // Datei öpffnen
      wb = excel.Workbooks.Open(
      datei,
      ExcelKonstanten.UpdateLinks.DontUpdate,
      ExcelKonstanten.ReadOnly,
      ExcelKonstanten.Format.Nothing,
      "", // Passwort
      "", // WriteResPasswort
      ExcelKonstanten.IgnoreReadOnlyRecommended,
      XlPlatform.xlWindows,
      "", // Trennzeichen
      ExcelKonstanten.Editable,
      ExcelKonstanten.DontNotifiy,
      ExcelKonstanten.Converter.Default,
      ExcelKonstanten.DontAddToMru,
      ExcelKonstanten.Local,
      ExcelKonstanten.CorruptLoad.NormalLoad);

      // Arbeitsblätter lesen
      Sheets sheets = wb.Worksheets;
      
      // ein Arbeitsblatt auswählen…  diese zeiel funktioniert nur wenn ich bestimmte arbeitsmappe explizit entweder als            [CENTER]zahl oder Name wähle!!!

      Worksheet ws = (Worksheet)sheets.get_Item("x"); // x steht für eine beiliege zahl

2.891 Beiträge seit 2004
vor 13 Jahren

Und deine Frage dazu ist welche?

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

also ich möchte irgend eine beliebige Excel Datei öffnen(das krieg ich noch hin) und das Programm soll automatische die Namen von Arbeitsmappen auslesen und diese Namen dann in eine Listbox ausgeben.

überigens danke für die schnelle antwotr!

1.696 Beiträge seit 2006
vor 13 Jahren

Hallo,

wenn es nur darum geht die Mappennamen zu bekommen oder nur den Inhalt von Exceldateien auszulesen dann ist es besser mit OLEDB zu holen anstatt Excel selbst im Hintergrund zu starten. Schau mal hierein: http://www.codeproject.com/KB/aspnet/getsheetnames.aspx

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

1.029 Beiträge seit 2010
vor 13 Jahren

Da muss ich vbprogger Recht geben...

Jedenfalls - um einzig und allein die Namen in der Listbox auszugeben könnte man deinen Code um folgenden Schnipsel ergänzen:


foreach (Worksheet sht in wb.Worksheets)
    listBox1.Items.Add(sht.Name);

Bei deiner Zuweisung an die Variable ws (die du übrigens doppelt deklarierst):

Was möchtest du denn noch als Indexer verwenden um ein Item aus der Liste zu
bekommen ? (Verstehe das Problem leider nicht dass du hast...)

Wenn du nur die Namen in der ListBox hast könntest du z.B. auf "SelectedValueChanged" deiner ListBox reagieren und über
ListBox.SelectedValue.ToString() wieder den Tabellennamen für den Indexer bekommen.

Also

wb.Worksheets[listbox1.SelectedValue.ToString()]

Gruß
Achim

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

also vielen Dank Leute, da der Aufwand am geringsten war habe ich den Code so wie der Taipi88 vorgeschlagen hat, erweitert und jetzt funkts . 👍
aber macht euch keine Sorgen, da ich ja noch vieles mit dieser Datei anstellen will/werde, werden bestimmt noch weitere Fragen kommen!

vielen Dank!!