2010-06-09 75 views
1

到目前为止,所有的Excel工具都围绕着打开文件,为其写入值并保存它。在Excel中插入和更新数据

是否有办法自动更新Excel中的数据(打开时)?

谢谢!

P.S.我正在寻找有关Microsoft.Office.Interop.Excel的更多信息;

+0

你能否澄清一点,其中的数据是从哪里来的,以及如何在Excel中使用它?您是否试图将正在运行的应用程序中的数据推送到已打开的工作簿中? – Mathias 2010-06-09 04:58:41

+1

您是否试图在程序中打开它时更改Excel中的数据,而不是仅添加新的内容? – Rox 2010-06-09 06:18:51

+0

@Mathias,@Rox。 没错。 Excel工作簿已打开,工作表上的数据将不断更新,如价格或股票市场价格。 – user303907 2010-06-09 06:41:06

回答

1

不知道你是如何写入数据,但对于从Excel中读取数据,这是我做的:

选择我需要的(可以从一个小区到几行和列的范围 - 它在这里一个单细胞):

Excel.Range cell = m_worksheet.get_Range(_CellName(end, column), _CellName(end, column)); 

然后让你从所选择的小区所需要的值:

string value = cell.Value2.ToString().Substring(...); 

你也可以玛尼如果存在任何颜色,请调整颜色:

if(Convert.ToInt32(cell.Interior.ColorIndex) == 6) //we have yellow background 

但是,如果您的用户使用Excel 2007,请注意颜色。你将不得不使用RGB代码。

此外,虽然处理Excel文件,但它锁定其他应用程序,我想。您必须检查第三方是否重新设置了值。

而对于_CellName:

private string _CellName(int row, int col) 
{ 
     string result = ""; 
     if (col > 26) // for columns like 'AA' 
     { 
      result = ((char)((char)(col/26) + 'A' - 1)).ToString(); //get the first letter 
     } 
     result += ((char)((char)(col % 26) + 'A' - 1)).ToString(); //get the second/only letter 
     return result + Convert.ToString(row); 
} 
+0

这是什么_CellName?我似乎无法找到它。 – user303907 2010-06-10 03:21:39

+0

抱歉没有提及它,我一直使用它,并忘记它是由我们编写的:它以Excel样式格式返回单元格的名称 - 第1行第1列为“A1”。将添加代码到答案。 – Rox 2010-06-10 05:13:30

0

你可以使用一个定时器,让它重新启动定期更新或做任何事情。 这个链接详细描述了这个概念。 http://www.ehow.com/how_5052033_insert-timer-ms-excel.html
它会在你的情况下工作的方式是定期让你从外部资源获取数据,然后你可以编写一些VBA代码(或宏)来更新你的工作表。
就像股票代码。

+0

不,重新启动不是一个选项。因为有第三方正在读取这些值。 – user303907 2010-06-09 04:54:52

+0

我不是说重新启动excel,我打算在完成触发器后重新启动计时器。 – 2010-06-09 12:57:43

+0

@ user303907更新了我的帖子。 – 2010-06-09 21:10:29

相关问题