2010-02-22 58 views
4

我的任务是为Excel 2007创建一个插件,用于从自定义数据源读取数据。我已经有了读取数据的代码。它用C#编写并返回对象。这是针对银行系统的,我无法直接访问数据。用户ID,密码和硬件生成密钥必须提供给C#DLL以获取最新数据。如何创建读取自定义数据的Excel加载项?

我的老板希望数据每分钟自动更新一次,或者使用Excel提供的刷新功能手动更新。所以我需要将数据显示在Excel中,就像它来自标准数据库连接一样。

我已经四处寻找起点,但我正在努力寻找一些信息,这将有助于这个非常具体的要求。谁能帮忙?

+0

你有没有找到你要找的东西?我也在努力寻找资源......这可能是因为我不知道我正在寻找什么关键词,但是我们也有同样的想法。只是好奇你做了什么才能使它工作(几年前)。谢谢。 – TravisWhidden 2012-11-21 22:41:35

回答

2

从下载开始VSTO (Visual Studio Tools for Office)这将允许您创建一个C#Excel加载项。

在Visual Studio中,当您创建一个新项目时,您将看到Office,并且您将能够从中选择Excel。

从那里开始,一旦你这样做,你可以回来问一些更具体的问题。

使用Excel的一些实用技巧。

选择一个活动表:

Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet; 

要选择一个特定的范围(A1 - B5在这种情况下):

Excel.Range range = sheet.get_Range("A1", "B5") as Excel.Range; 

的值设置为整个范围:

range.Value2 = 2; //will set every cell in A1 through B5 to 2 

你可以从数值范围在2维数组,例如:

object[,] values = range.Value2 as object[,]; 
//this will return an multidimensional array representing rows and cols 
//as you see in the range. in this case the array is filed with "2" 

然后,您可以更改值在整个阵列中回适用于范围:

values[2, 2] = 4; //will change the value to 4 in row 2, col 2 of the *range* 
    range.Value2 = values; //set back the whole range to the array 

您可以使用此技术一次更新整个范围,方法是先准备一个数组,然后将其设置为范围值。

要从您的范围内的特定单元中获取值(设置值的方式相同但方向相反)。

Excel.Range cell = range.Cells[1,1] as Excel.Range; //this will take the cell from row 1, cell 1. if you used array this would be values[1,1] 
string value = (cell.Value2 ?? "").ToString(); 

这应该允许你做基本任务在Excel中,您可以设定值,并获得价值和选择范围。一旦你有更具体的问题,请回来。

不要忘了,来自Excel的数组是基于1而不是零的!

相关问题