c# – 如何创建读取自定义数据的Excel加载项?

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

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

我四处寻找起点,但我很难找到一些有助于满足这一特定要求的信息.有人可以帮忙吗?

最佳答案 从下载
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

您可以从二维数组中的范围获取值,例如:

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的而不是从零开始!

点赞