根据包含文件path的查询在表单上embedded多个Excel工作表

首先我要描述我的目标,然后我会解释我迄今为止所做的。

我的目标是build立一个数据库,用户可以在这些数据库中填写一些字段,其中包括描述excel文件的位置以及他们想要显示的范围的字段。 将会有一个表格显示所有logging中embedded了excel文件。 基本上它是一个概览屏幕,其中多个excel文件被embedded/链接到内容。

  ------------------ --------------------------------- | Record #1 | Embedded/Linked Excel #1 | | Record #2 | Embedded/Linked Excel #2 | . . . . . . 

目前我已经select了MS Access,但是我并没有使用VBA / Access,而是愿意在.NET世界中使用某些东西。 我对OLE对象的经验仅限于非连续的forms使用,所以我不完全知道我所尝试的是否可能。

在MS Access中我尝试过使用Unbound Object Frames。 这些链接/embedded的excel文件给出了一个文件path很容易,但他们似乎没有能力有一个控制源,我可以绑定一个查询的文件path。 表单需要一次显示多个logging/ excel文件。

我也尝试使用绑定的对象框架来存储表中的实际excel文件。 这不是理想的解决scheme,因为内容已经存在于不同的excel文件中,不希望用户必须更新两个位置的文件 – 表中的实际文件和OLE对象。

我的目标是在MS Access / VBA中实现的吗? 如果不是的话,它可以在C#/ WPF / Winforms中实现吗? 无论哪种方式,如果可能的话,我该如何去做呢? 将欣赏具体细节,甚至提示/思想/沉思等

要在您的WPF/Winforms应用程序中打开和查看Excel文件,您需要使用Excel的版本的主互操作程序集 ,而不是您计划支持的。

DotNetPerls有一个很好的教程如何开始。

在你的情况下,它会看起来像这样:

 public void ExcelOpenSpreadsheets(string databaseStoredExcelFileName, int worksheetNumber, string startRange, string endRange) { try { Workbook workBook = _excelApp.Workbooks.Open(databaseStoredExcelFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); var worksheet = workbook.Worksheets[worksheetNumber] as Microsoft.Office.Interop.Excel.Worksheet; Excel.Range range = worksheet.get_Range(startRange, endRange); workBook.Close(false, thisFileName, null); Marshal.ReleaseComObject(workBook); //now do something with "range" } catch { } } 

为了一个Excel文件embeddedWPF/Winforms应用程序中,您将需要修改此代码项目来处理Excel而不是Word