微软Interop:Excel列名

10

我正在使用Microsoft Interop来读取数据。

在Excel表格中,列名类似于A、B、C、D......AA、AB等等。有没有办法读取这些列名?

如果您需要其他信息,请告诉我。

敬礼, Priyank


2
你是说“读取列名”是什么意思?你想知道你在哪一列吗? - Jetti
@Jetti:是的,我想读取列名并在下拉列表中向用户显示。 - Priyank Thakkar
按列名来说,您指的是每个列的第一行中的内容,对吗? - Jetti
@Jetti:不是在第一排,而是Excel为每列显示的实际内容。例如 A,B,C。 - Priyank Thakkar
看一下我的答案,它会给你每列的字母名称。 - Jetti
2个回答

15
     Excel.Application xlApp = new Excel.Application();
     Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("workbookname");
     Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1]; // assume it is the first sheet
     int columnCount = xlWorksheet.UsedRange.Columns.Count;
     List<string> columnNames = new List<string>();
     for (int c = 1; c < columnCount; c++)
     {
         if (xlWorksheet.Cells[1, c].Value2 != null)
         {
             string columnName = xlWorksheet.Columns[c].Address;
             Regex reg = new Regex(@"(\$)(\w*):");
             if (reg.IsMatch(columnName))
             {
                 Match match = reg.Match(columnName);             
                 columnNames.Add(match.Groups[2].Value);
             }                      
        }
     }
这将把每个列名放在一个 List<string> 中,你可以将其绑定到下拉框。

1
你在哪里找到关于整个interop.excel命名空间的文档?通过查看MSDN,我似乎找不到任何有趣的东西。 - squelos
@squelos 你可以在这里找到一些信息 来自MSDN。我还从一本书中获取了其他信息。我还有一篇博客文章,你可以在这里阅读 链接,它涉及使用C#和.NET 4.0读取Excel数据的方法。 - Jetti
1
这对我来说是一个很好的起点!我想把Excel中的列名复制到CSV文件中,并将您的代码调整为columnNames.Add(xlWorksheet.Cells[1, c].Value); 谢谢! - Rob Koch
最后一列缺失: for (int c = 1; c <= columnCount; c++) - jcmeyrignac

0

您还可以按索引读取列

假设您的Excel工作表对象为"excelWorksheet",则可以通过以下方式访问它:

要设置值,您可以使用:

excelWorksheet.Cells[rowindex, columnindex].Value = "test";

要获取值,您可以使用:

string result = excelWorksheet.Cells[rowindex, columnindex].Value ;

请记住,字段是动态生成的,因此在编写代码时可能会显示错误,但请忽略它们。

例如,如果您想在Excel工作表的第1行和第2列中设置文本,则可以使用以下代码:

excelWorksheet.Cells[1, 2].Value = "test";

我已经使用它并且完美运行。


这不是对楼主问题的回答,请你能够删除这个回复。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接