Laden...

Excel in DataTable um im Gridview zu filtern

Erstellt von meekmill vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.265 Views
M
meekmill Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren
Excel in DataTable um im Gridview zu filtern

Hallo myCSharp Gemeinde,

Zu aller erst möchte ich sagen, dass ich ein kompletter Anfänger im Bereich Programmierung bin.
Ich benötige Hilfe bei meinem Code, der eine Excel Datei in ein Datagridview einliest. Dies klappt auch prima, jedoch will ich nun, die Daten in ein Datatable schreiben, diesen dann im DataGridview anzeigen lassen, um so mit dem Datatable verschiedene Filter auf die Einträge legen zu können, per Textbox.

  private void buttonDatagrid_Click(object sender, EventArgs e)
        {

            Excel.Application myApplication;
            Excel.Workbook myWorkbook;
            Excel.Worksheet myWorksheet;

            myApplication = null;

            myApplication = new Excel.Application();
            myApplication.Visible = false;
            myApplication.ScreenUpdating = false;

            myWorkbook = (Excel.Workbook)myApplication.Workbooks.Add(System.Reflection.Missing.Value);
            myWorksheet = (Excel.Worksheet)myWorkbook.ActiveSheet;

            this.openFileDialog1.FileName = "*.xls";
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {

                myWorkbook = myApplication.Workbooks.Open(openFileDialog1.FileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\n", false, false, 0, true);
                Excel.Sheets sheets = myWorkbook.Worksheets;
                Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);

                for (int i = 1; i <= 20; i++)
                {
                    Excel.Range myrange = worksheet.get_Range("A" + i.ToString(), "F" + i.ToString());
                    System.Array myvalues = (System.Array)myrange.Cells.Value;
                    string[] stringArray = ConvertToStringArray(myvalues);
                    dt.Rows.Add(stringArray);
                    dataGridView1.DataSource = dt;
                }
            }
        }

        /* Methode für das StringArray */

        public string[] ConvertToStringArray(System.Array values)
        {
            string[] thisArray = new string[values.Length];
            for (int i = 1; i <= values.Length; i++)
            {
                if (values.GetValue(1, i) == null)
                    thisArray[i - 1] = "";
                else
                    thisArray[i - 1] = (string)values.GetValue(1, i).ToString();
            }
            return thisArray;
        }

So weit bin ich nun und weiß absolut nicht, was ich hier ändern soll.

                for (int i = 1; i <= 20; i++)
                {
                    Excel.Range myrange = worksheet.get_Range("A" + i.ToString(), "F" + i.ToString());
                    System.Array myvalues = (System.Array)myrange.Cells.Value;
                    string[] stringArray = ConvertToStringArray(myvalues);
                    dt.Rows.Add(stringArray);
                    dataGridView1.DataSource = dt;

Vielen Danke im Vorraus. 🙂

MeekMill

M
81 Beiträge seit 2009
vor 11 Jahren

Hast du mal mit WPF versuchst. Unter WinForms, was mir auf die schnelle einfällt um ohne große Probleme ein Excel Sheet zu bearbeiten, wären die Janus Controls, jedoch sind die nur käuflich zu erwerben.

M
meekmill Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren

Zunächst danke für die Antwort 😃. Mit WPF habe ich mich noch nicht ausseinander gesetzt, werde ich aber dann mal machen. Ich wollte gern zunächst kostenlos mit Visual Studio bzw. Csharp arbeiten, deswegen käme dies nicht in Frage.