NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Excel

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Vadym Stižko:18.7.2018 13:08

Dobrý den,
Jsem začátečník v C#.

Mám v excelu data. Chci vybrat celý sloupec a uložit si ho do proměnné. Problém nastává když mám v sloupci 1 buňku prázdnou a za ní další data. Nevím jak na to.

Budu rád za každou radu.

Zkusil jsem:

     Application app = new Application();
     Workbook workbook = null;
     Worksheet worksheet = null;
     Range range = null;
     app.Visible = true;
     app.ScreenUpdating = true;
     app.DisplayAlerts = true;
     workbook = app.Workbooks.Open(@"path...", Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value);
     worksheet = (Worksheet)workbook.Worksheets[1];
     range = worksheet.get_Range("N1",Missing.Value);    //Tento příkaz by to chtělo asi změnit, ale nevím jak
     range = range.get_End(XlDirection.xlDown);
     string downAdress = range.get_Address(false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
     range = worksheet.get_Range("N1", downAdress);
     object[,] values = (object[,])range.Value2;
     Console.WriteLine();
     for (int i = 1; i <= values.GetLength(0); i++)
     {
         Console.Write("{0} ", i);
         for (int j = 1; j <= values.GetLength(1); j++)
         {
             Console.Write("{0} ", values[i, j]);
         }
         Console.WriteLine();
     }
     range = null;
     worksheet = null;
     if (workbook != null)
         workbook.Close(false, Missing.Value, Missing.Value);
     workbook = null;
     if (app != null)
         app.Quit();
     app = null;

Chci docílit: Jestli jsem to dobře pochopil, tak bych potřeboval range celého sloupce i když jsou některé buňky prázdné.

 
Odpovědět
18.7.2018 13:08
Avatar
Ghst
Člen
Avatar
Ghst:19.7.2018 12:16

Tohle by mohlo pomoct

//...
        worksheet = (Worksheet)workbook.Worksheets[1];
     //range = worksheet.get_Range("N1",Missing.Value);    //Tento příkaz by to chtělo asi změnit, ale nevím jak
     //range = range.get_End(XlDirection.xlDown);
        range = worksheet.Cells[worksheet.Rows.Count, "N"].End( XlDirection.xlUp );
     string downAdress = range.get_Address(false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
//...
Editováno 19.7.2018 12:17
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.7.2018 12:16
Avatar
Odpovídá na Ghst
Vadym Stižko:19.7.2018 12:23

Moc díky!

 
Nahoru Odpovědět
19.7.2018 12:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.