不使用oledb将excel表格数据导入datagrid [英] Import excel sheet data to datagrid without using oledb

查看:34
本文介绍了不使用oledb将excel表格数据导入datagrid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的基于 Windows 的应用程序中(C#)我想导入 Excel 表以在 DatatGridView 中显示其数据我不想使用 oledb

In my Windows based application(C#) i want to import excel sheet to show its data in DatatGridView i dont want to use oledb

任何帮助

推荐答案

    using Excel = Microsoft.Office.Interop.Excel;

您显然需要将引用添加到您的项目中,然后就很简单了:)

You'll obviously need to add the reference to your project, and then it's plain simple :)

    private void ProcessExcel(string filepath)
    {

            Excel.ApplicationClass ExcelObj = new Excel.ApplicationClass();

            Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open(filepath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            Excel.Sheets sheets = theWorkbook.Worksheets;

            Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);

            Excel.Range range = worksheet.UsedRange;

            System.Array myvalues = (System.Array)range.Cells.Value2;

            int vertical = myvalues.GetLength(0);
            int horizontal = myvalues.GetLength(1);



            string[] headers = new string[horizontal];
            string[] data = new string[horizontal];


            DataTable ResultsHeader = New DataTable();
            DataSet ds = New DataSet();


            for (int x = 1; x <= vertical; x++)
            {
                    Utils.inicializarArrays(datos);
                    for (int y = 1; y <= horizontal; y++)
                    {
                        if (x == 1)
                        {
                            headers[y - 1] = myvalues.GetValue(x, y).ToString();
                        }
                        else
                        {
                            string auxdata = "";
                            if (myvalues.GetValue(x, y) != null)
                                auxdata = myvalues.GetValue(x, y).ToString();
                            data[y - 1] = auxdata;
                        }

                    }
                    if(x == 1) //headers
                    {
                            for(int w = 0; w < horizontal; w++)
                            {
                                    ResultsHeader.Columns.Add(New DataColumn(headers[w], GetType(string)));
                            }
                            ds.Tables.Add(ResultsHeader);
                    }
                    else
                    {
                            DataRow dataRow = ds.Tables[0].NewRow();
                            for(int w = 0; w < horizontal; w++)
                            {
                                    dataRow(headers[w]) = data[w]
                            }
                            ds.Tables[0].Rows.Add(dataRow);
                    }
            }
            DataView myDataView = new DataView();
            myDataView.Table = ds.Tables[0];
            MydataGrid.CurrentPageIndex = 0;
            MydataGrid.DataSource = myDataView;
            MydataGrid.DataBind();
    }

这篇关于不使用oledb将excel表格数据导入datagrid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆