我有一个Excel电子表格,可以监控某些证券的市场价格。
我从彭博获得这个市场价格,只要市场开放,这些价值就会一直变化。
我有一个简单的VBA工具,每次风险被破坏时都会向我发送警报。
不幸的是,我在白天运行多个Excel电子表格,有时当警报出现时我的其他宏停止工作。
所以我在考虑是否有可能在c#中编写一些内容,我可以在后台运行这个excel工具作为一个完全不同的过程,它不会干扰我打开的任何其他excel工作簿。
答案 0 :(得分:0)
我建议使用Microsoft.Office.Interop.Excel
在C#
中实现您的代码。
使用上面的NameSpace,您可以获得对Excel对象模型的完全访问权限,然后您可以监视不同的单元格。
使用C#
读取Excel文件的代码遍布互联网。
好消息是C#应用程序将在Excel文件的不同主题中运行,并且不会干扰它们。
更好的方法是在C#
中编写一个工具来实现它的逻辑,而不是尝试编写工具来在后台运行Excel工具。
答案 1 :(得分:0)
每个宏应该独立工作(除非它所做的某些操作包括精确影响其他工作簿)。 C#也是一样的。在C#中处理Excel时,你必须依赖Excel Object/Application
,你可以创建任意多个;每个Excel对象都与一个工作簿/ Excel文件相关联。您可以并行处理其中一些对象而没有任何问题(等效于VBA的情况 - >也许您必须查看宏中的代码)。
Here您有一个MSDN示例代码,展示了如何使用C#自动化Excel。
如果你在这些行下面运行小代码,你会看到两个不同的Excel文件,你可能会以你想要的方式影响它们:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string path = @"path to first Excel file";
string path2 = @"path to second Excel file";
Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application();
Workbook oWB = oXL.Workbooks.Open(path, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Worksheet oSheet = (Worksheet)oWB.ActiveSheet;
Microsoft.Office.Interop.Excel.Application oXL2 = new Microsoft.Office.Interop.Excel.Application();
Workbook oWB2 = oXL2.Workbooks.Open(path2, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Worksheet oSheet2 = (Worksheet)oWB2.ActiveSheet;
oXL.Visible = true;
oXL2.Visible = true;
oXL = null;
oXL2 = null;
}
}
}