我需要使用一些已经在 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 进程实例化后再次验证。最后杀死第二个列表中存在且第一个列表中不存在的那个。
好的,就是这样。谢谢。