none
C# Excel ausgabe auf Console RRS feed

  • Frage

  • Hallo zusammen,

    ich habe eine frage und hoffe jemand kann mir helfen.
    Ich habe es geschafft eine Excel Datei mit meinem Code zu lesen und auf der Console wiederzugeben.

    Ich weiss nur nicht wie ich herrausfinden kann wielang bzw wie gross die Excel Datei ist.

    Aktuell sag ich bei der Ausgabe das 5 Spalten und 5 Zeilen ausgeben werden sollen.
    Gibt es eine einfache möglichkeit zu sagen soviel spalten ausgeben wie spalten.länge und
    Zeilen ausgeben soviel wie Zeilen.länge? (So wie man es bei einem Array machen würde).

    try
                                {
                                    Excel.Application oExcel = new Excel.Application();
                                    string filepath = @Pfad;
                                    Excel.Workbook WB = oExcel.Workbooks.Open(filepath);
                                    string ExcelWorkbookname = WB.Name;
                                    int worksheetcount = WB.Worksheets.Count;
                                    Excel.Worksheet wks = (Excel.Worksheet)WB.Worksheets[1];
                                    string firstworksheetname = wks.Name;
                                    
                                // Consolen ausgabe Test
    
                                for (int spalte = 1; spalte = 5; spalte++)
                                {
                                    for (int zeile = 1; zeile 0 5; zeile++)
                                    {
                                        Console.Write(((Excel.Range)wks.Cells[spalte, zeile]).Value);
                                        Console.Write(" ");
                                    }
                                    Console.WriteLine("");
                                }
                                // ---------------------
                            }
                                catch (Exception ex)
                                {
                                    string error = ex.Message;
                                }

    Würde mich freuen wenn mir da jemand helfen könnte.

    Am ende möchte ich dahin das ich bestimmte Spalten der Excel datei in eine Datenbank schreiben will.
    Aber erstmal das Problem mit der Consolen ausgabe lösen :)

    Samstag, 17. Februar 2018 22:46

Antworten

  • Hi,
    UsedRange ist die Lösung. Hier mal eine kleine KonsolenDemo:

    using System;
    using System.IO;
    using Excel = Microsoft.Office.Interop.Excel;
    
    namespace ConsoleApp1
    {
      class Program38
      {
        static void Main(string[] args)
        {
          try
          {
            Demo c = new Demo();
            c.Execute(Path.Combine(Environment.CurrentDirectory, "Program38Mappe1.xlsx"), 1);
          }
          catch (Exception ex) { Console.WriteLine(ex.ToString()); }
          Console.WriteLine("Fertig, Abschluss mit beliebiger Taste");
          Console.ReadKey();
        }
    
        class Demo
        {
          internal void Execute(string filepath, int sheetNummer)
          {
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWb = xlApp.Workbooks.Open(filepath);
            Excel.Worksheet xlSh = (Excel.Worksheet)xlWb.Worksheets[sheetNummer];
            Excel.Range usedRange = xlSh.UsedRange;
            string result = $"1. Spalte: {usedRange.Column}";
            result += Environment.NewLine + $"1. Zeile: {usedRange.Row}";
            result += Environment.NewLine + $"Anzahl Spalten: {usedRange.Columns.Count}";
            result += Environment.NewLine + $"Anzahl Zeilen: {usedRange.Rows.Count}";
            Console.WriteLine(result);
            xlWb.Close();
            xlApp.Quit();
            xlApp = null; } } } }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks


    Sonntag, 18. Februar 2018 05:42

Alle Antworten

  • Hi,
    UsedRange ist die Lösung. Hier mal eine kleine KonsolenDemo:

    using System;
    using System.IO;
    using Excel = Microsoft.Office.Interop.Excel;
    
    namespace ConsoleApp1
    {
      class Program38
      {
        static void Main(string[] args)
        {
          try
          {
            Demo c = new Demo();
            c.Execute(Path.Combine(Environment.CurrentDirectory, "Program38Mappe1.xlsx"), 1);
          }
          catch (Exception ex) { Console.WriteLine(ex.ToString()); }
          Console.WriteLine("Fertig, Abschluss mit beliebiger Taste");
          Console.ReadKey();
        }
    
        class Demo
        {
          internal void Execute(string filepath, int sheetNummer)
          {
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWb = xlApp.Workbooks.Open(filepath);
            Excel.Worksheet xlSh = (Excel.Worksheet)xlWb.Worksheets[sheetNummer];
            Excel.Range usedRange = xlSh.UsedRange;
            string result = $"1. Spalte: {usedRange.Column}";
            result += Environment.NewLine + $"1. Zeile: {usedRange.Row}";
            result += Environment.NewLine + $"Anzahl Spalten: {usedRange.Columns.Count}";
            result += Environment.NewLine + $"Anzahl Zeilen: {usedRange.Rows.Count}";
            Console.WriteLine(result);
            xlWb.Close();
            xlApp.Quit();
            xlApp = null; } } } }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks


    Sonntag, 18. Februar 2018 05:42
  • Sehr geehrter Herr Fleischer,

    ich bedanke mich für die rasche antwort und dem super samplecode :)


    • Bearbeitet piri_m Sonntag, 18. Februar 2018 17:37 neuen Thread neue Frage
    Sonntag, 18. Februar 2018 13:00
  • Hi,
    neuen Frage = neuer Thread, damit auch andere davon profitieren können.

    Ansonsten habe ich keine Glaskugel, die mir zeigt, was Du gemacht hast, wie der Programmcode aussieht, wie konkret die betreffenden Zellen gefüllt und formatiert sind usw.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks


    Sonntag, 18. Februar 2018 13:38