C# 将excel导入到DataGridView上 (可以对数据进行操作)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 将excel导入到DataGridView上 (可以对数据进行操作)相关的知识,希望对你有一定的参考价值。

先拜大神!!!
RT求例子——求注释,还没达到看到代码就能知道每步作用的境界。
提前感谢咋个。

参考技术A 需要把excel导入到dataset或者datatable中,然后转换成你要的值追问

具体滴。。。

本回答被提问者和网友采纳
参考技术B public static DataTable ImportExcelToDataSet(string filePath)
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;Imex=1'";

DataTable dt = new DataTable();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [message$]", strConn);

try

oada.Fill(dt);

catch (Exception ex)

throw new Exception("该Excel文件的工作表的名字设置为 message,以便获取数据" + ex.Message);

return dt;


这个就是吧excel到如到datatable中 然后你指定DataGridView的数据源是这个即可
默认情况下这个会吧excel第一行作为datatable的column,追问

测试可行,不过还有有问题要问你,那个在DataGridView中修改的数据怎么保存到excel中。。。

参考技术C NPOI 里面很详细了 我还真做过这个。。。追问

亲,求程序

将任何 Excel 电子表格导入 DataGridView - C#

【中文标题】将任何 Excel 电子表格导入 DataGridView - C#【英文标题】:Importing Any Excel Spreadsheet into a DataGridView - C# 【发布时间】:2012-07-10 15:56:23 【问题描述】:

我有一个将 Excel 电子表格导入数据网格视图的程序。我写的代码如下:

try
                
                    OleDbConnectionStringBuilder connStringBuilder = new OleDbConnectionStringBuilder();
                    connStringBuilder.DataSource = file;
                    connStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connStringBuilder.Add("Extended Properties", "Excel 8.0;HDR=NO;IMEX1");

                    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

                    DbDataAdapter adapter = factory.CreateDataAdapter();

                    DbCommand selectCommand = factory.CreateCommand();
                    selectCommand.CommandText = "SELECT * FROM [All Carpets to Excel$]";

                    DbConnection connection = factory.CreateConnection();
                    connection.ConnectionString = connStringBuilder.ConnectionString;

                    selectCommand.Connection = connection;

                    adapter.SelectCommand = selectCommand;

                    data = new DataSet();

                    adapter.Fill(data);

                    dataGridView1.DataSource = data.Tables[0].DefaultView;

                
                catch (IOException)
                

                

行 "selectCommand.CommandText = "SELECT * FROM [All Carpets to Excel$]";"从具有该名称的工作表中获取数据。我想知道如何让这个程序打开一个带有任何工作表名称的 excel 文档。一个我可能不知道的。

【问题讨论】:

【参考方案1】:

您可以像这样获取所有工作表的名称..

public string[] GetExcelSheetNames(string excelFileName)

        OleDbConnection con = null;
        DataTable dt = null;
        String conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFileName + ";Extended Properties=Excel 8.0;";
        con= new OleDbConnection(conStr);
        con.Open();
        dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if (dt == null)
        
            return null;
        

        String[] excelSheetNames = new String[dt.Rows.Count];
        int i = 0;

        foreach (DataRow row in dt.Rows)
        
            excelSheetNames[i] = row["TABLE_NAME"].ToString();
            i++;
        

        return excelSheetNames;

【讨论】:

虽然excel文件有多个工作表。 我认为可能是“foreach”语句。 当我调试时,它似乎完全跳过了 foreach 语句,只返回一个“null”字符串[]...嗯...

以上是关于C# 将excel导入到DataGridView上 (可以对数据进行操作)的主要内容,如果未能解决你的问题,请参考以下文章

C#从excel表导入到datagridview 找不到可安装的 ISAM

C# Excel加载到datagridview显示

C#导入导出excel的问题

c#编制程序把EXCEL文件导入DATAGRIDVIEW,结果运行后提示:外部表不是预期的格式。

如何将datagridview导出到Open Office Excel c#

c#中,excel表格内容展现在datagridview1中,如何实现?