CSharp - 在包含文件路径的查询上的基于表单 上嵌入多个Excel工作表

  显示原文与译文双语对照的内容
0 0

先描述我的目标,然后解释我目前所做的。

我的目标是有一个数据库,用户可以填写一些字段,包括描述 excel 文件的位置和范围。 将有一个窗体显示所有记录,其中包含嵌入的excel文件。 基本上它是一个概览屏幕,其中有多个excel文件被嵌入/链接到内容。

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

目前我选择了 MS Access,但我没有绑定到使用 vba/access,我愿意在. NET 世界中使用一些东西。 我对OLE对象的体验仅限于非"连续"表单使用,所以我不会完全意识到我所尝试的是什么。

在 MS Access 中,我尝试使用未绑定对象框架。 这些链接/嵌入excel文件的文件路径很容易,但它们似乎没有一个控制源来绑定文件路径。 表单需要一次显示 1个上的记录/excel文件。

我还尝试使用绑定对象框架在表中存储实际的excel文件。 这不是理想的解决方案,因为内容已经存在于不同的excel文件中。

我的目标在 MS Access/vba中是否可以实现? 如果没有,如果可以能的话,它是否可以在 C#/WPF/Winforms? 中实现。 会喜欢细节甚至是 hints/thoughts/musings 等。

时间:原作者:

0 0

要打开和查看 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
 {
 }
}

在你的WPF/Winforms 应用程序中,为了将excel嵌入到你的应用程序中,你可能需要修改该代码项目来处理 Excel 而不是。

原作者:
...