0

Excel ファイルに既に設定されているいくつかのマーカーを取得する必要があります。OleDbDataAdapter を使用してファイルをロードしています。その後、DataTable に入力しますが、そこにマーカーのリストが見つかりません。そのようなリストにアクセスするにはどうすればよいか、または可能であれば誰でも教えてもらえますか? ありがとう。

マーカーによって、行/列のペア、さらには行/列のアリアに付けられた名前を理解しています。

私はこのようにしました:

        string FileName = Environment.CurrentDirectory + @"\Release.xls";
        string currentSheet = "BOX";
        Application excelApp = new Application();
        Workbooks excelWorkbooks = excelApp.Workbooks;
        Workbook report = excelWorkbooks.Open(FileName, 0, false, 5, "", "", true, XlPlatform.xlWindows, "", true, false, 0, false, false, false);
        Worksheet ws = report.Sheets[currentSheet];

すべての名前は次のように読み取られます。

        public static List<Name> GetNamedRanges(Workbook activeWorkbook)
    {

        List<Name> namedRanges = new List<Name>();
        Name name;
        for (int i = 0; i < activeWorkbook.Names.Count; i++)
        {
            name = activeWorkbook.Names.Item(i + 1);

            namedRanges.Add(name);
        }
        return namedRanges;
    }

プログラムを実行するたびに、Excel プロセスが起動され、最後に閉じられないことに注意してください。そのため、トリックを使用する必要があります。

            private static void CheckExcellProcesses(ref Hashtable myHashtable)
    {
        Process[] AllProcesses = Process.GetProcessesByName("excel");
        myHashtable = new Hashtable();
        int iCount = 0;

        foreach (Process ExcelProcess in AllProcesses)
        {
            myHashtable.Add(ExcelProcess.Id, iCount);
            iCount = iCount + 1;
        }
    }

アプリケーションの起動時にプロセスを確認し、新しい Excel プロセスのインスタンス化後にもう一度確認します。最後に、2番目のリストに存在し、最初のリストには存在しないものを殺します。

わかりました、それだけです。ありがとう。

4

1 に答える 1

1

ADO.NET 経由で Excel シートにアクセスする場合、「マーカー」にアクセスすることはできません。Excelシートをテーブルとして考える必要があります。

于 2013-09-10T09:23:37.330 に答える