У меня простой вопрос:
Как я могу из сценария VBA отправить текущий экземпляр моей книги в приложение C#?
Идея заключается в том, чтобы прочитать данные Excel и включить привязку данных в реальном времени с помощью интерфейса WPF.
С наилучшими пожеланиями, СМ
Основная цель — создать графический интерфейс WPF, который поможет пользователям заполнить книгу Excel, содержащую около 200 столбцов. В идеале я бы хотел, чтобы графический интерфейс обновлял лист в реальном времени, и наоборот. Что вы подразумеваете под клиентом реального времени?
Ок, похоже, это не связано с Вычислениями в реальном времени . Единственный способ взаимодействия приложения .NET с открытой книгой Excel — Microsoft.Office.Interop.Excel
. См. Как получить доступ к объектам взаимодействия Office.
Единственный способ взаимодействия приложения .NET с открытой книгой Excel — Microsoft.Office.Interop.Excel
:
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelProgrammingWalkthruComplete {
class Walkthrough
{
static void Main(string[] args)
{
// Create a list of accounts.
var bankAccounts = new List<Account>
{
new Account {
ID = 345678,
Balance = 541.27
},
new Account {
ID = 1230221,
Balance = -127.44
}
};
// Display the list in an Excel spreadsheet.
DisplayInExcel(bankAccounts);
}
static void DisplayInExcel(IEnumerable<Account> accounts)
{
var excelApp = new Excel.Application();
// Make the object visible.
excelApp.Visible = true;
// We need to communicate with the active workbook.
Excel._Worksheet workSheet = excelApp.ActiveSheet;
// Earlier versions of C# require explicit casting.
//Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
// Establish column headings in cells A1 and B1.
workSheet.Cells[1, "A"] = "ID Number";
workSheet.Cells[1, "B"] = "Current Balance";
var row = 1;
foreach (var acct in accounts)
{
row++;
workSheet.Cells[row, "A"] = acct.ID;
workSheet.Cells[row, "B"] = acct.Balance;
}
workSheet.Columns[1].AutoFit();
workSheet.Columns[2].AutoFit();
// Call to AutoFormat in Visual C#. This statement replaces the
// two calls to AutoFit.
workSheet.Range["A1", "B3"].AutoFormat(
Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
// Put the spreadsheet contents on the clipboard. The Copy method has one
// optional parameter for specifying a destination. Because no argument
// is sent, the destination is the Clipboard.
workSheet.Range["A1:B3"].Copy();
}
}
public class Account
{
public int ID { get; set; }
public double Balance { get; set; }
}
}
Это позволяет одновременно работать в интерактивном режиме как в Excel, так и в вашем приложении WPF, а также динамически обмениваться данными в обоих направлениях.
Мало информации. Где находится клиент реального времени? Зачем вам нужно запускать скрипт VBA?