【问题标题】:Get Index of Column Name to Map with DataTable C#使用 DataTable C# 获取要映射的列名索引
【发布时间】:2023-04-09 21:48:01
【问题描述】:

我想在数据库中导入一个 excel 数据。我有一个 Excel,每个月都会由团队更新,他们添加了名为“Jan 数据格式”(当前月份名称 +“数据格式”)的新列。在上个月列之后添加。

DataTable dt = new DataTable();
            dt.Columns.Add("SOURCE");
            dt.Columns.Add("DUMMY CODE");
            dt.Columns.Add("CUSTOMER CODE");
            dt.Columns.Add("STK_CODE");

            DataRow row;

            while (((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, 1]).Value2 != null)
            {
                row = dt.NewRow();
                row[0] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, colIndex]).Value2);
                row[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, 2]).Value2);
                row[2] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, 3]).Value2);
                row[3] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, 4]).Value2);
                index++;

                rowIndex = 2 + index;
                dt.Rows.Add(row);
            }

这里row[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)wks.Cells[rowIndex, 2]).Value2); 我正在使用列索引。 如何使用列名代替列索引?

【问题讨论】:

  • row["SOURCE"] 等等?还是您指的是Excel.Range
  • @Jimi row["SOURCE"] 等

标签: c# excel interop office-interop excel-interop


【解决方案1】:

在 Excel 中,列唯一的非索引标识符是列顶部的字母:AB 等。这无法更改。

在其他单元格上方的单元格中键入的任何文本,看起来像列标题/名称只是文本,就 Excel 而言。

我正在使用列索引。如何使用列名代替列索引?

因此没有“列名”之类的东西,因此无法使用字符串信息来标识列。

有必要循环一行中的所有单元格,测试它们的值,以识别具有特定字符串作为列标题的列。类似的东西

string headerName ="two";
Excel.Worksheet sh = (Excel.Worksheet) excelApp.ActiveSheet;
Excel.Range headerRow = (Excel.Range) sh.UsedRange.Rows[1];
Excel.Range col = null;

foreach(Excel.Range cel in headerRow.Cells)
{
    if (cel.Text.ToString().Equals(headerName))
    {
        col = sh.Range[cel.Address, cel.End[Excel.XlDirection.xlDown]];
        break;
    }
}

foreach(Excel.Range cellInCol in col)
{
    Debug.Print(cellInCol.Value2.ToString());
}

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    相关资源
    最近更新 更多