» »

c# object[,] to object[][], excel itd.

c# object[,] to object[][], excel itd.

darkkk ::

Živjo, en manjši problem:
1. z interopom berem neki Excel workbook/sheet in je vsebino sheeta dost enostavno vržt v bodisi Array, bodisi object[,] z npr
ws = Workbook.Sheets[1];
object[,] obj = ws.UsedRange;

2. a se da ti dve strukturi brez neke "zoprne" (beri loopanje po celicah zgornjih objektov) zmetat v neko ienumerable strukturo, najraje list object[], ki bi predstavljali stolpce.

mihies ::

Mogoče za začetek vprašanje, zakaj to sploh potrebuješ?
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

darkkk ::

Neke podatke vlečem dol iz različnih spletnih strani (in ja, objavljeni so samo v excelu brez nekega zares standardnega formata) in "parsam" ven.


(... sanja svinja xml kukuruz... )

Zgodovina sprememb…

  • spremenil: darkkk ()

mihies ::

V redu, samo kaj ti bo List pomagal? A ne moreš zazankat po nizu?
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

darkkk ::

Hec je, da lahko pol uporabljaš različne linq fore na zadevi. Na object[,] oz. arrayu ne moreš kaj dosti. (npr findindex itd. )

mihies ::

Ti ta koda kaj pomaga?

static void Main(string[] args)
        {
            int[,] tubo = new int[4, 8];
            for (int i = 0; i < tubo.GetLength(0); i++)
            {
                for (int j = 0; j < tubo.GetLength(1); j++)
                {
                    tubo[i, j] = i * 10 + j;
                }
            }

            var query = from i in GetByRow(tubo, 1)
                        select i;
            Console.WriteLine("Cells in row 1");
            foreach (int i in query)
                Console.Write(i + ", ");

            Console.WriteLine("\nAll Cells");
            var q2 = from r in GetRows(tubo)
                     from c in r
                     select c;
            foreach (int i in q2)
                Console.Write(i + ", ");

            Console.WriteLine("Rank " + tubo.Rank);
            Console.ReadLine();
        }

        static IEnumerable<IEnumerable<T>> GetRows<T>(T[,] source)
        {
            for (int i = 0; i < source.GetLength(0); i++)
            {
                yield return GetByRow(source, i);
            }
        }

        static IEnumerable<T> GetByRow<T>(T[,] source, int row)
        {
            for (int i = 0; i < source.GetLength(1); i++)
            {
                yield return source[row, i];
            }
        }
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

darkkk ::

Not bad.
Ampak še vedno je "le" malo bolj fancy zapakirana iteracija čez elemente v object[,] :)


Sej vem, da najbrž se ne da nič zares fancy narest na tem, Excel object model je pač kar je.

mihies ::

Seveda, kaj pa misliš da je LINQ nad IEnumerable drugega? Na tak način se lahko greš LINQ nad object[,] po dolgem in počez.
Imaš mogoče kakšne druge ideje? Pomagalo bi, če bi pokazal kodo, kot si si jo zamislil.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Visual C# problem

Oddelek: Programiranje
303065 (2237) mladec
»

[C#] Domača naloga - osnove

Oddelek: Programiranje
372458 (1675) 11tomi12
»

[C#] Reševanje domačih nalog

Oddelek: Programiranje
173204 (2708) krastača

[C#]polje znakov

Oddelek: Programiranje
112331 (2159) Ziga Dolhar
»

c# težava delo z nizi

Oddelek: Programiranje
131498 (1349) Tutankhamun

Več podobnih tem