2017-02-01 15 views
1

Я унаследовал проект от предыдущего разработчика, и я делаю некоторые корректировки кода. К сожалению, как он это сделал, он не будет работать для моих новых требований.Как связать VSTO Excel Добавить в DataSet (.XSD)

Я создал объект набора XSD (C# Dataset) и заполнил его из базы данных. Проверено, что данные фактически вытягиваются из базы данных и заполняются в наборе данных.

Каков наилучший способ привязать этот набор данных ко всему листу для отображения данных. Я видел много онлайн-примеров того, как привязать набор данных к объекту списка или другим элементам управления, но как просто сбрасывать его на лист Excel. Как я могу получить ссылку на рабочую книгу/рабочий лист, чтобы установить источник данных.

+0

Есть ли свойство листа или книги, где я могу установить его в набор данных в качестве источника данных или это действительно способ сделать это. – logixologist

ответ

1

Связывание является относительным термином на основе WPF или WinForms опыт, лучший способ может быть, чтобы думать об этом как публикации и извлечения вместо того, чтобы избежать путаницы.


Метод

Только вы знаете, данные, но лучше всего проходным данных в массив, который будет содержать строки и столбцы данных.

После того, как массив будет завершен, опубликуйте его на странице. Вот некоторый базовый код, который я использовал.


Пример

public static int LastRow { get; set; } 
public static int LastColumn { get; set; } 

public static void PublishToSheet(this WorksheetBase theSheet, 
            int startRow, 
            int startColumn, 
            ref string[,] OutputArray) 
{ 

    var totalRows = OutputArray.GetLength(0); 
    var maxColumns = OutputArray.GetLength(1); 

    var range = theSheet.Range[theSheet.Cells[startRow, startColumn], 
           theSheet.Cells[startRow + totalRows - 1, 
               startColumn + maxColumns - 1] 
           ]; 
    range.NumberFormat = "@"; 
    range.Value2 = OutputArray; 

    LastRow = totalRows; 
    LastColumn = maxColumns; 

} 

У меня есть свойства LastRow и LastColumn, чтобы позволить мне работать дальше со страницей на других данных должна быть добавлена.

Использование

string[,] OutputArray = new string[2, 2]; 

OutputArray[0, 0] = "Alpha"; 
OutputArray[0, 1] = "Beta"; 
OutputArray[1, 0] = "Gamma"; 
OutputArray[1, 1] = "Delta"; 

this.PublishToSheet(10, 4, ref OutputArray); 

Для извлечения данных см моего ответа на How to best fetch a cell value from excel using VSTO?

+0

Благодарим вас за информацию. Я посмотрю на это так. – logixologist