我有一个 Excel 电子表格来监控某些证券的市场价格。
我从彭博社得到这个市场价格,只要市场开放,这些价值就会一直变化。
我有一个简单的 VBA 工具,每次违反风险时都会向我发送警报。
不幸的是,我白天运行多个 Excel 电子表格,有时当警报出现时,我的其他宏停止工作。
所以我在想是否有可能在 c# 中编写一些东西,我可以在后台运行这个 excel 工具作为一个完全不同的过程,它不会干扰我打开的任何其他 excel 工作簿。
每个宏都应该独立工作(除非它确实包含精确影响其他工作簿的某些操作)。C# 也是一样。在 C# 中处理 Excel 时,您必须依赖 anExcel Object/Application
并且您可以创建任意数量的;每个 Excel 对象都与一个工作簿/Excel 文件相关联。您可以毫无问题地并行处理其中一些对象(相当于 VBA 的情况 -> 也许您必须查看宏中的代码)。
这里有一个来自 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;
}
}
}
我建议使用Microsoft.Office.Interop.Excel
在C#
.
使用上面的 NameSpace,您可以获得对 Excel 对象模型的完全访问权限,然后您可以监控不同的单元格。
C#
使用Internet读取 Excel 文件的代码。
好消息是 C# 应用程序将在 Excel 文件的不同线程中运行并且不会干扰它们。
与其尝试编写一个在后台运行 Excel 工具的工具,不如编写一个工具C#
来实现它的逻辑。