简体   繁体   English

C# Excel 互操作 - 如何检查范围内的单个单元格是否具有单元格边界?

[英]C# Excel Interop — How to check if a single cell in a range has cell borders?

I am currently writing a C# application to parse excel worksheets.我目前正在编写一个 C# 应用程序来解析 excel 工作表。 I have these loops, which iterate through every cell in the worksheet and print their values to the console:我有这些循环,它们遍历工作表中的每个单元格并将它们的值打印到控制台:

for (int i = 1; i <= excelRange.Height; i++) {
   for (int j = 1; j <= excelRange.Width; j++) {
     if (j == 1)
       Console.Write("\r\n");
     if (excelRange.Cells[i, j] != null && excelRange.Cells[i, j].Value2 != null)
       if (excelRange.Cells[i, j].Value2.ToString() == "-2146826265") {
         Console.Write("\t");
       }
       else {
         Console.Write(excelRange.Cells[i, j].Value2.toString() + "\t");
       }
   }
 }

My goal is the following: I want to find the address (row and column) of the first cell that has a top and left cell border.我的目标如下:我想找到具有顶部和左侧单元格边框的第一个单元格的地址(行和列)。 Unfortunately, I cannot figure out how to check what the borders are on a single cell without changing or setting them-- I thought it would be something like不幸的是,我无法弄清楚如何在不更改或设置它们的情况下检查单个单元格上的边框 - 我认为它会像

excelRange.Cells[i,j].Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle == Excel.XlLineStyle.xlContinuous;

But unfortunately, this code simply crashes the application.但不幸的是,这段代码只会让应用程序崩溃。 Does anyone know a straightforward way to check if a single cell contains borders?有谁知道检查单个单元格是否包含边框的简单方法?

You're almost there.您快到了。 Since the LineStyle property is dynamic (ie the compiler doesn't know what kind of object it is), you'll need to explicitly cast it to XlLineStyle in order to prevent a runtime error:由于 LineStyle 属性是动态的(即编译器不知道它是哪种 object),您需要将其显式转换为 XlLineStyle 以防止运行时错误:

var cellLineStyle = (Excel.XlLineStyle)excelRange.Cells[i,j].Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle;
if (cellLineStyle == Excel.XlLineStyle.xlContinuous) {
    // do stuff
}

Now I'm sure it's dynamic for a reason, and the above code will probably blow up in certain circumstances, but I'm not familiar enough with Excel interop to tell you when that'll happen.现在我确定它是动态的是有原因的,上面的代码可能会在某些情况下崩溃,但我对 Excel 互操作不够熟悉,无法告诉你什么时候会发生。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM