如何使用c#在excel中查找到某一字符串同一行的另一数据?

时间:2023-01-07 13:15:45
如何使用c#在excel中查找到某一字符串同一行的另一数据?
如何,我想通过在texbox1中输入某个mac地址的值,然后在textbox2.中显示同一行对应的uuid的值,请问怎么编写代码,谢谢专家

14 个解决方案

#1


如图。。。。。。。。。。。。。。。。。。

#2


把excel表中的数据存入成access数据库,用ado.net查询

#3


 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;



namespace excelread
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Sheet1.xlsx; Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";//此连接可以操作.xls与.xlsx文
            //String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +  + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
            OleDbConnection con = new OleDbConnection(sConnectionString);
            con.Open();
            string TT = textBox1.Text;
            string sql = "select UUID from [Sheet1$] where MAC地址=" + "TT";
            OleDbCommand cmd = new OleDbCommand(sql,con);
            textBox2.Text = cmd.ExecuteScalar().ToString();
        }

        private void label1_Click(object sender, EventArgs e)
        {
        
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
我的代码是这样的,但是运行的时候很多问题

#4


引用 2 楼 maverick432 的回复:
把excel表中的数据存入成access数据库,用ado.net查询
能帮忙看下下面的代码吗,谢谢

#5


你把excel的数据放到datatable,直接操作datatable就好了啊
excel导出到datatable,网上有很多方法。

#6


如何使用c#在excel中查找到某一字符串同一行的另一数据?
运行是这样的

#7


如何使用c#在excel中查找到某一字符串同一行的另一数据?
如何使用c#在excel中查找到某一字符串同一行的另一数据?

#8


网上搜:c# excel 读取
用引用的com组件的方式(需要本机安装Excel),从第6行开始读,读第二个单元格的值,如果找到需要的,再读第4个单元格的值。

#9


TT 不是变量吗
string sql = "select UUID from [Sheet1$] where MAC地址='" + TT + "'";

#10


引用 9 楼 xuzuning 的回复:
TT 不是变量吗
string sql = "select UUID from [Sheet1$] where MAC地址='" + TT + "'";
是的,不能这么写吗,应该怎么写

#11


引用 8 楼 zbdzjx 的回复:
网上搜:c# excel 读取
用引用的com组件的方式(需要本机安装Excel),从第6行开始读,读第二个单元格的值,如果找到需要的,再读第4个单元格的值。

请问下代码应该怎么写呢

#12


我写的和你写的一样吗?

#13


引用 12 楼 xuzuning 的回复:
我写的和你写的一样吗?

你的对的,现在的问题是如何不收前几行不是数据的影响,成功查找到uuid

#14


用第三方组件spire.xls可以实现这个功能,NuGet上下载Spire.Xls.dll(搜索spire.xls),然后用下面的代码:
private void FindString_Click(object sender, EventArgs e)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("1.xlsx");

            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];

            //查找指定MAC地址对应的单元格
            CellRange cell = sheet.FindString(textBox1.Text, true, true);

            //获取该单元格对应行中第四个单元格的文本并写入textBox2
            textBox2.Text = sheet.Rows[cell.Row - 1].Cells[3].Text;
        }

如何使用c#在excel中查找到某一字符串同一行的另一数据?

#1


如图。。。。。。。。。。。。。。。。。。

#2


把excel表中的数据存入成access数据库,用ado.net查询

#3


 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;



namespace excelread
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Sheet1.xlsx; Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";//此连接可以操作.xls与.xlsx文
            //String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +  + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
            OleDbConnection con = new OleDbConnection(sConnectionString);
            con.Open();
            string TT = textBox1.Text;
            string sql = "select UUID from [Sheet1$] where MAC地址=" + "TT";
            OleDbCommand cmd = new OleDbCommand(sql,con);
            textBox2.Text = cmd.ExecuteScalar().ToString();
        }

        private void label1_Click(object sender, EventArgs e)
        {
        
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
我的代码是这样的,但是运行的时候很多问题

#4


引用 2 楼 maverick432 的回复:
把excel表中的数据存入成access数据库,用ado.net查询
能帮忙看下下面的代码吗,谢谢

#5


你把excel的数据放到datatable,直接操作datatable就好了啊
excel导出到datatable,网上有很多方法。

#6


如何使用c#在excel中查找到某一字符串同一行的另一数据?
运行是这样的

#7


如何使用c#在excel中查找到某一字符串同一行的另一数据?
如何使用c#在excel中查找到某一字符串同一行的另一数据?

#8


网上搜:c# excel 读取
用引用的com组件的方式(需要本机安装Excel),从第6行开始读,读第二个单元格的值,如果找到需要的,再读第4个单元格的值。

#9


TT 不是变量吗
string sql = "select UUID from [Sheet1$] where MAC地址='" + TT + "'";

#10


引用 9 楼 xuzuning 的回复:
TT 不是变量吗
string sql = "select UUID from [Sheet1$] where MAC地址='" + TT + "'";
是的,不能这么写吗,应该怎么写

#11


引用 8 楼 zbdzjx 的回复:
网上搜:c# excel 读取
用引用的com组件的方式(需要本机安装Excel),从第6行开始读,读第二个单元格的值,如果找到需要的,再读第4个单元格的值。

请问下代码应该怎么写呢

#12


我写的和你写的一样吗?

#13


引用 12 楼 xuzuning 的回复:
我写的和你写的一样吗?

你的对的,现在的问题是如何不收前几行不是数据的影响,成功查找到uuid

#14


用第三方组件spire.xls可以实现这个功能,NuGet上下载Spire.Xls.dll(搜索spire.xls),然后用下面的代码:
private void FindString_Click(object sender, EventArgs e)
        {
            //加载Excel文档
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("1.xlsx");

            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];

            //查找指定MAC地址对应的单元格
            CellRange cell = sheet.FindString(textBox1.Text, true, true);

            //获取该单元格对应行中第四个单元格的文本并写入textBox2
            textBox2.Text = sheet.Rows[cell.Row - 1].Cells[3].Text;
        }

如何使用c#在excel中查找到某一字符串同一行的另一数据?