1

我有一个 Excel 电子表格来监控某些证券的市场价格。

我从彭博社得到这个市场价格,只要市场开放,这些价值就会一直变化。

我有一个简单的 VBA 工具,每次违反风险时都会向我发送警报。

不幸的是,我白天运行多个 Excel 电子表格,有时当警报出现时,我的其他宏停止工作。

所以我在想是否有可能在 c# 中编写一些东西,我可以在后台运行这个 excel 工具作为一个完全不同的过程,它不会干扰我打开的任何其他 excel 工作簿。

4

2 回答 2

0

每个宏都应该独立工作(除非它确实包含精确影响其他工作簿的某些操作)。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;
        }
    }
}
于 2013-07-25T18:18:54.787 回答
0

我建议使用Microsoft.Office.Interop.ExcelC#.

使用上面的 NameSpace,您可以获得对 Excel 对象模型的完全访问权限,然后您可以监控不同的单元格。

C#使用Internet读取 Excel 文件的代码。

好消息是 C# 应用程序将在 Excel 文件的不同线程中运行并且不会干扰它们。

与其尝试编写一个在后台运行 Excel 工具的工具,不如编写一个工具C#来实现它的逻辑。

于 2013-07-25T18:14:52.317 回答