Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Excel中插入和更新数据_C#_Excel - Fatal编程技术网

C# 在Excel中插入和更新数据

C# 在Excel中插入和更新数据,c#,excel,C#,Excel,到目前为止,所有的Excel工作都围绕着打开一个文件,向其中写入值并保存它 有没有办法自动更新Excel中的数据(打开时) 谢谢 另外,我正在寻找有关Microsoft.Office.Interop.Excel的更多信息 您可以使用计时器,并让它重新启动以进行定期更新或执行任何操作。 此链接详细描述了该概念 在您的案例中,它的工作方式是定期允许您从外部资源获取数据,然后您可以编写一些VBA代码(或宏)来更新工作表。 就像股票行情一样。你可以使用计时器,让它重新启动,进行定期更新或做任何事情。 此

到目前为止,所有的Excel工作都围绕着打开一个文件,向其中写入值并保存它

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

谢谢


另外,我正在寻找有关Microsoft.Office.Interop.Excel的更多信息

您可以使用计时器,并让它重新启动以进行定期更新或执行任何操作。 此链接详细描述了该概念
在您的案例中,它的工作方式是定期允许您从外部资源获取数据,然后您可以编写一些VBA代码(或宏)来更新工作表。

就像股票行情一样。

你可以使用计时器,让它重新启动,进行定期更新或做任何事情。 此链接详细描述了该概念
在您的案例中,它的工作方式是定期允许您从外部资源获取数据,然后您可以编写一些VBA代码(或宏)来更新工作表。

就像股票行情一样。

为什么不通过ADO访问excel并将其视为数据库?

为什么不通过ADO访问excel并将其视为数据库?

不确定您是如何写入数据的,但对于从Excel读取数据,我会这样做:

选择所需的范围(可以从一个单元格到多个行和列-此处为单个单元格):

然后从所选单元格中获取所需的值:

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);
 }

不确定您是如何写入数据的,但对于从Excel读取数据,我会这样做:

选择所需的范围(可以从一个单元格到多个行和列-此处为单个单元格):

然后从所选单元格中获取所需的值:

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);
 }

不,重新启动不是一个选项。因为有第三方正在读取这些值。我不是指重新启动excel,我是指在计时器完成触发器后重新启动计时器。不,重新启动不是一个选项。因为有第三方正在读取这些值。我不是指重新启动excel,我是指在计时器完成触发后重新启动计时器。您能否澄清一下数据来自何处,以及如何在excel中使用这些数据?您是否试图将正在运行的应用程序中的数据推送到已打开的工作簿中?是否试图在程序中打开Excel时更改Excel中的数据,而不仅仅是添加新内容?@Mathias,@Rox。这是正确的。excel工作簿已打开,工作表上的数据将不断更新,如价格反馈或股票市场利率。您能否澄清一下数据的来源,以及如何在excel中使用这些数据?您是否试图将正在运行的应用程序中的数据推送到已打开的工作簿中?是否试图在程序中打开Excel时更改Excel中的数据,而不仅仅是添加新内容?@Mathias,@Rox。这是正确的。excel工作簿打开,工作表上的数据将像价格反馈或股票市场利率一样不断更新。因为我的外部DDE应用程序要求excel应用程序不断运行。因为我的外部DDE应用程序要求excel应用程序不断运行。这是什么_CellName?我似乎找不到它。很抱歉没有提及它,我一直在使用它,但忘了它是我们写的:它以Excel样式格式返回单元格名称,第1行第1列为“A1”。将在答案中添加代码。这是什么?我似乎找不到它。很抱歉没有提及它,我一直在使用它,但忘了它是我们写的:它以Excel样式格式返回单元格名称,第1行第1列为“A1”。将代码添加到答案中。