2

C#経由でXLSドキュメントに存在するチェックボックスの状態を取得しようとしています。ここに戻らせてください。これは私が持っているものです:

  • MS Office 2007 + 開発ツールおよび VC# 2010 Express
  • 参照された MS Excel 12.0 オブジェクト ライブラリ
  • XLS ドキュメント

Excel.Shape オブジェクトの取得に成功しました。ただし、チェックされているかどうかを判断しようとすると行き詰まります。これまでのところ、msoShapeMixed という AutoShapeType を取得しています。

誰かが私を正しい方向に向けることができますか? ありがとう!

  class Program {
    static void Main(string[] args) {
      Application excel = new Application();
      Workbook wb = excel.Workbooks.Open(
        "document.xls",
        Missing.Value, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value
      );
      Worksheet ws = wb.Worksheets[3];
      Microsoft.Office.Interop.Excel.Shape sh = ws.Shapes.Item("checkbox1");
      Console.WriteLine("[" + (sh.AutoShapeType.ToString()) + "]"); // msoShapeMixed
      Console.ReadLine();
    }
  }
4

1 に答える 1

1

VB を使用してこの問題を解決し、クラス ライブラリを構築しました。このライブラリは C# で使用されます。

VB:

Option Strict Off
Imports Excel = Microsoft.Office.Interop.Excel

Public Class CheckboxReader
    Dim xlApp As Excel.Application = Nothing
    Dim xlWorkBooks As Excel.Workbooks = Nothing
    Dim xlWorkBook As Excel.Workbook = Nothing
    Dim xlWorkSheet As Excel.Worksheet = Nothing

    Public Sub New(ByVal excelFilename As String, ByVal worksheetName As String)
        xlApp = New Excel.Application
        xlApp.DisplayAlerts = False
        xlWorkBooks = xlApp.Workbooks
        xlWorkBook = xlWorkBooks.Open(excelFilename)
        For Each worksheet As Excel.Worksheet In xlWorkBook.Worksheets
            If worksheet.Name = worksheetName Then
                xlWorkSheet = worksheet
                Exit For
            End If
        Next
    End Sub

    Public Function GetCheckBoxValue(ByVal Name As String) As Boolean
        Dim found As Boolean = False
        Dim result As Boolean = False
        If Not found Then
            result = xlWorkSheet.OLEObjects(Name).Object.Value()
            found = True
        End If
        Return result
    End Function
End Class

C#:

CheckboxReader chr = new CheckboxReader(excelFilename, worksheetName);
bool typeFabInstall = chr.GetCheckBoxValue("checkboxName");

よく働く。幸運を!

于 2013-05-12T19:55:36.607 に答える