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番目のリストに存在し、最初のリストには存在しないものを殺します。
わかりました、それだけです。ありがとう。