Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从datagridview获取excel列名_C#_Excel_Winforms_Vba_Datagridview - Fatal编程技术网

C# 如何从datagridview获取excel列名

C# 如何从datagridview获取excel列名,c#,excel,winforms,vba,datagridview,C#,Excel,Winforms,Vba,Datagridview,大家好,我有一个表单应用程序,用于重命名从excel获取数据的文件,我想使用datagridview获取excel列名,我应该怎么做 编辑:注释上的excel图像 path = dataGridView1.Rows[i].Cells["K1"].Value.ToString(); path2 = dataGridView1.Rows[i].Cells["K2"].Value.ToString(); 这些K1和K2是其中一个excel列名的名称,但我希望它能在所有exce

大家好,我有一个表单应用程序,用于重命名从excel获取数据的文件,我想使用datagridview获取excel列名,我应该怎么做

编辑:注释上的excel图像

path = dataGridView1.Rows[i].Cells["K1"].Value.ToString();
            path2 = dataGridView1.Rows[i].Cells["K2"].Value.ToString();
这些K1和K2是其中一个excel列名的名称,但我希望它能在所有excel列上工作,如何实现

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

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

        private void button1_Click(object sender, EventArgs e)
        {


            OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\STAJ\\AppData\\Roaming\\Skype\\My Skype Received Files\\ETKB-Aktarim-Test(1).xlsx ; Extended Properties='Excel 12.0 xml;HDR=YES;'");
            baglan.Open();
            string sorgu = "select * from [Sheet1$] ";
            OleDbDataAdapter data_adaptor = new OleDbDataAdapter(sorgu, baglan);
            baglan.Close();
            DataTable dt = new DataTable();
            data_adaptor.Fill(dt);
            dataGridView1.DataSource = dt;


            string path="";
            string path2 = "";
            string newFileName = "";
            string oldFileName = "";
            int i = 0;


            foreach (DataGridViewRow row in dataGridView1.Rows)
            {


                try
                {
                    path = dataGridView1.Rows[i].Cells["K1"].Value.ToString();
                    path2 = dataGridView1.Rows[i].Cells["K2"].Value.ToString();
                    oldFileName = path ;
                    newFileName = path2;
                    if (File.Exists(oldFileName))
                    {
                        File.Move(oldFileName, newFileName);
                    }  
                  i++;
                }
                catch (Exception ex)
    {
        MessageBox.Show("DOSYA ADI DEGISTIRILDI");
    }
            }

        }
    }
}

我不清楚你的目标是什么。。。你能发布你的Excel文件的截图吗?是否尝试将带有某些标题的Excel表格转换为datagridview,并为dgv列提供该表格第一行的名称?@SpaceSteak否我想从c#获取Excel列名,无论是哪个Excel文件。它应该适用于所有excel。K1和K2是excel列的名称。@SpaceSteak这是我的excel。tinypic照片不加载。。。你能试试imgur吗?顺便说一句,当您在扩展属性中使用HDR=Yes时,假定您的整个第一行都有列名。。。如果K2(而不是A1,B1)包含列名。。。您要导入的所有Excel文件是否都具有相同的格式?我为此做的一件事是确保所有导入的图纸都有标题范围,并且只使用dgv列名的范围值。。。但这是使用Excel.工作簿而不是OleDb加载文件。@我不清楚您的目标是什么。。。你能发布你的Excel文件的截图吗?是否尝试将带有某些标题的Excel表格转换为datagridview,并为dgv列提供该表格第一行的名称?@SpaceSteak否我想从c#获取Excel列名,无论是哪个Excel文件。它应该适用于所有excel。K1和K2是excel列的名称。@SpaceSteak这是我的excel。tinypic照片不加载。。。你能试试imgur吗?顺便说一句,当您在扩展属性中使用HDR=Yes时,假定您的整个第一行都有列名。。。如果K2(而不是A1,B1)包含列名。。。您要导入的所有Excel文件是否都具有相同的格式?我为此做的一件事是确保所有导入的图纸都有标题范围,并且只使用dgv列名的范围值。。。但这是使用Excel.工作簿而不是OleDb加载文件。@SpaceSteak