如何使用Microsoft.Office.Interop读取Excel中的填充模式

时间:2013-06-04 18:54:19

标签: vb.net excel-2010 office-interop

我正在尝试导入每行都有问题的电子表格以及4个可能的答案。我可以成功读取单元格值,但正确的答案由填充图案(50%灰色)表示。我使用下面的代码循环遍历工作表并选择正确的答案。但是,即使模式在工作表上清晰可见,Pattern的值似乎对所有列都相同。我在找错了地方吗?

工作表是.xls文件。我正在使用Excel 2010和VS 2010。

    Dim dt As New System.Data.DataTable
    Dim wks As Worksheet = wkb.Worksheets(1)
    Dim ur As Range = wks.UsedRange

    ' Load all cells into an array.
    Dim SheetData(,) As Object = ur.Value(XlRangeValueDataType.xlRangeValueDefault)

    ' Loop through all cells.
    For j As Integer = 1 To SheetData.GetUpperBound(0)
        For k As Integer = 1 To (SheetData.GetUpperBound(1) - 1)

            'Get the pattern for the cells in columns 7 - 10
            If (k > 6) And (k < 11) Then
                Dim r As Range = wks.Cells(j, k)
                Dim s As Style = r.Style
                If s.Interior.Pattern = XlPattern.xlPatternGray50 Then

                    'Convert column index to "A" - "D"
                    Dim key As Char = ChrW(k + 58)

                    'Do something with key


                End If
            End If
        Next
    Next

我查看了MSDN,但他们很少或根本没有解释样式在对象模型中的存储方式。我看到的几个例子显示使用Style.Interior.Pattern在选择单元格后设置值。我是否需要选择单元格来读取模式?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

可以从Interior.Pattern对象访问

RangeRange接口/对象包含范围的所有样式和值信息。

Style对象的Range属性是指在工作簿级别定义的样式(“共享”样式)。

来自MSDN

  

Style对象包含所有样式属性(字体,数字格式,对齐方式等)作为属性。有几种内置样式,包括Normal,Currency和   百分。使用Style对象是一种快速有效的更改方式   多个单元格上的几个单元格格式属性。

在您的情况下(样式似乎在单元格级别定义而不是使用“共享”样式),您只需要替换:

 Dim r As Range = wks.Cells(j, k)
 Dim s As Style = r.Style
 If s.Interior.Pattern = XlPattern.xlPatternGray50 Then

使用:

 Dim r As Range = wks.Cells(j, k)
'Dim s As Style = r.Style 'no need
 If r.Interior.Pattern = XlPattern.xlPatternGray50 Then
相关问题