到目前为止,所有Excel的内容都围绕打开文件,为其编写值并保存它。
有没有办法自动更新Excel中的数据(当它打开时)?
谢谢!
P.S。我正在寻找有关Microsoft.Office.Interop.Excel;
的更多信息答案 0 :(得分: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);
}
答案 1 :(得分:0)
您可以使用计时器并重新启动以进行定期更新或执行任何操作。
该链接详细描述了该概念。 http://www.ehow.com/how_5052033_insert-timer-ms-excel.html
在您的情况下它的工作方式是定期允许您从外部资源获取数据,然后您可以编写一些VBA代码(或宏)来更新您的工作表。
就像股票代码一样。
答案 2 :(得分:0)
为什么不通过ADO访问excel并将其视为数据库? http://www.connectionstrings.com/excel