我有一个Excel电子表格来监视某些证券的市场价格。创建一个单独的Excel进程
我从彭博市场获得这个市场价格,只要市场开放,这些价值就会随时变化。
我有一个简单的VBA工具,每次发生危险时都会向我发送警报。
不幸的是我在白天运行多个Excel电子表格,有时当警报来了我其他的宏停止工作。
所以我想如果它有可能在c#中写一些东西,我可以在后台运行这个excel工具,作为一个完全不同的过程,它不会干扰我的其他任何开放的excel工作簿。
我有一个Excel电子表格来监视某些证券的市场价格。创建一个单独的Excel进程
我从彭博市场获得这个市场价格,只要市场开放,这些价值就会随时变化。
我有一个简单的VBA工具,每次发生危险时都会向我发送警报。
不幸的是我在白天运行多个Excel电子表格,有时当警报来了我其他的宏停止工作。
所以我想如果它有可能在c#中写一些东西,我可以在后台运行这个excel工具,作为一个完全不同的过程,它不会干扰我的其他任何开放的excel工作簿。
我建议使用Microsoft.Office.Interop.Excel
以实现C#
你的代码。
使用上面的NameSpace可以获得对Excel模型的完全访问权限,然后就可以监视不同的单元格。
代码改为使用C#
是所有在互联网上的Excel文件。
好消息是C#应用程序在不同的线程您的Excel文件的运行,并不会干涉他们。
,而不是试图写在后台运行您的Excel工具的工具,更好的办法是在C#
写一个工具来实现它的逻辑。
每个宏都应该独立工作(除非其中的某些操作包括精确影响其他工作簿)。对于C#同样的事情。在C#中处理Excel时,您必须依赖Excel Object/Application
,并且可以根据需要创建多个Excel。每个Excel对象都与工作簿/ Excel文件关联。您可以并行处理这些对象中的一些,而不会出现任何问题(与VBA相同 - >或许您必须查看宏中的代码)。
Here你从MSDN展示了如何使用Excel的C#自动化示例代码。
如果遇到下面这些行小代码,你会看到,你可能会在方式影响两个不同的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;
}
}
}
你是说所有ExcelSheets的这是在不同的文件中得到冷冻?或者它们都是同一个Excel文件的一部分? –