1

我正在尝试导入一个电子表格,该电子表格的每一行都有一个问题以及 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 设置值。我需要选择单元格来读取模式吗?

任何帮助,将不胜感激。

4

1 回答 1

-1

Interior.Pattern可以从Range对象访问。接口/对象包含范围的Range所有样式和值信息。

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

来自MSDN

Style 对象包含所有样式属性(字体、数字格式、对齐方式等)作为属性。有几种内置样式,包括 Normal、Currency 和 Percent。使用 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
于 2013-06-04T19:42:35.230 回答