C# 读取 Excel xlsx 文件,显示在 DataGridView 中

13 篇文章 0 订阅

编写 read_excel.cs 如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Data;
using System.Linq;
using System.Text;
using System.Data.OleDb;

namespace ReadExcel
{
  public partial class Program
  {
    
    static void Main(string[] args)
    {
        if (args.Length <1){
            Console.WriteLine(" usage: read_excel your_file.xlsx ");
            return ;
        }
        if (! File.Exists(args[0])){
            Console.WriteLine("Error: {0} not exists.", args[0]);
            return ;
        }
        if (Path.GetExtension(args[0]) != ".xlsx"){
            Console.WriteLine("Tip: can only read file.xlsx");
        }
        string filePath = args[0]; // your_excel_file_path
 
        string connStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"", filePath);
 
        using (OleDbConnection conn = new OleDbConnection(connStr))
        {
            conn.Open();
 
            string sheet1 = "Sheet1";
 
            string query = string.Format("SELECT * FROM [{0}$]", sheet1);
 
            using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
            {
                DataTable dataTable = new DataTable();
                adapter.Fill(dataTable);
                int rows, cols;
                // 处理获取到的数据
                foreach (DataRow row in dataTable.Rows)
                {
                    rows = row.Table.Rows.IndexOf(row) +1;
                    foreach (DataColumn column in dataTable.Columns)
                    {
                        string value = row[column].ToString() ?? string.Empty;                       
                        cols = column.Ordinal +1;
                        Console.WriteLine("Cell({0:d},{1:d}): {2}", rows,cols,value);
                    }
                }
            }
        } 
        Console.ReadKey();
    }
  }
}

SET PATH=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;%PATH%

编译:csc.exe  /t:exe read_excel.cs  

环境:win10 64位系统 运行 \your\path\read_excel.exe  test1.xlsx

错误信息:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。

搜索 Microsoft Access Database Engine 2016 

我先下载了  accessdatabaseengine.exe 安装好后,还是运行出错。

卸载了32位版本,又下载了 AccessDatabaseEngine_X64.exe 安装好后,能运行了。

参考:C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

C#读取Excel表格数据到DataGridView中,代码如下

    private void btnShow_Click(object sender, EventArgs e)
    {   //首先根据打开文件对话框,选择excel表格
        OpenFileDialog fd = new OpenFileDialog();
        fd.Filter = "xlsx表格|*.xlsx"; //打开文件对话框筛选器
        string strPath;//文件完整的路径名
        if (fd.ShowDialog() == DialogResult.OK)
        {
            try
            {
                strPath = fd.FileName;
                string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";
                OleDbConnection Con = new OleDbConnection(strCon);//建立连接
                string strSql = "select * from [Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,并用中括号
                OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
                OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
                DataSet ds = new DataSet();//新建数据集
                da.Fill(ds, "sheet1");//把数据适配器中的数据读到数据集中的一个表中(此处表名为sheet1,可以任取表名)
                //指定datagridview1的数据源为数据集ds的第一张表(也就是sheet1表),也可以写ds.Table["sheet1"]

                dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);//捕捉异常
            }
        }
    }

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用C#的OleDbConnection和OleDbDataAdapter类来读取Excel文件,并将数据填充到DataGridView控件。 以下是一个示例代码: ```csharp string connectionString = "Provider=Microsoft.ACE.OLEDB.12.;Data Source=your_excel_file.xlsx;Extended Properties='Excel 12.;HDR=YES;IMEX=1;'"; string query = "SELECT * FROM [Sheet1$]"; OleDbConnection conn = new OleDbConnection(connectionString); OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; ``` 其,connectionString是连接字符串,需要根据你的Excel文件路径和版本进行修改;query是查询语句,[Sheet1$]表示读取Excel文件的第一个工作表。 通过OleDbDataAdapter的Fill方法将数据填充到DataTable,再将DataTable作为DataGridView数据源即可。 ### 回答2: 抱歉,很抱歉我无法回答这个问题。因为只给出了一个字母,并没有提供任何上下文或信息,我无法理解“c”代表什么意思。如果您能提供更多信息,我将尽力回答您的问题。 ### 回答3: C是一种高级编程语言,由Dennis Ritchie在贝尔实验室发明。C语言是一种结构化语言,具有丰富的语法和功能。它是一种静态类型的编程语言,可在大多数计算机上使用,包括嵌入式系统和超级计算机。 C语言的优点在于它具有高效性和可移植性。它使用简单的语法和指令,运行速度非常快。C语言编写的程序通常比使用其他编程语言编写的程序更节约计算机资源。C语言还支持高级编程技术,如指针和递归,这些技术可以让程序在内存使用方面更加灵活。 C语言有广泛的应用场景。它可以用于编写系统软件,如操作系统和编译器。它还可以用于编写应用程序,如数据库和网络应用程序。我们还可以使用C语言编写游戏和嵌入式控制应用程序。 C语言不仅是一种强大的编程语言,而且它的语法和概念也为其他高级编程语言打下了基础。例如,C++和Java语言是基于C语言设计的。这意味着,如果您学习C语言,您将对许多其他编程语言的工作原理和语法有所了解。 总而言之,C语言是一种非常强大和有用的编程语言,它有许多优点和广泛的应用场景。无论您是初学者还是有经验的程序员,学习C语言都是一项很有价值的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值