2016-02-03 3 views
0

Использование Interop мне удалось импортировать документ Excel (который содержит население) для многомерного массива строк этого формата:Экспорт многомерный массив строк в новую таблицу Excel

public string[,] DataArray; 

Я использовал этот метод для заполнения массив:

try 
{ 
    Excel.Application xlApp = new Excel.Application(); 
    xlWorkBook = xlApp.Workbooks.Open(FilePath); 
    Excel._Worksheet xlWorksheet = xlWorkBook.Sheets[1]; 
    Excel.Range xlRange = xlWorksheet.UsedRange; 
    rowCount = xlRange.Rows.Count; 
    colCount = xlRange.Columns.Count; 
    InitialiserTableauPopulation(rowCount, colCount); 
    for (int x = 1; x <= colCount; x++) 
    { 
    for (int y = 1; y <= rowCount; y++) 
    { 
     DataArray[x - 1, y - 1] = xlRange.Cells[y, x].Value2.ToString(); 
    } 
    } 
    xlApp.Workbooks.Close(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.message); 
} 

Во время отладки, я могу видеть, что формат является правильным, для каждого X (имя столбца), у меня есть несколько Y (данные строки).

Пример: DataArray [0,0] = ИМЯ, DataArray [0,1] = ДЖЕЙМС, DataArray [0,2] = ERIC и т.д.

сейчас то, что я пытаюсь сделать, это взять образец этой совокупности, создать новый многомерный массив строк, а затем экспортировать этот «образец» в новый документ excel: но я потерян.

Как мне перейти на экспорт существующего массива двухмерных строк на новый лист excel, сохраняя тот же формат Array [column] [row]?

+0

Вы пытаетесь экспортировать в XSL или XSLX? – CrazyDart

+0

XSLX будет предпочтительнее, это фактически исходный тип файла, который я импортирую в свою программу и в свой массив. Даже процедура, чтобы сохранить в CSV, поможет мне прямо сейчас, но мой учитель хочет, чтобы я мог делать несколько листов в одном документе Excel, поэтому XSLX - это путь. – Beerbossa

+0

Итак, это курс программирования, в котором вам нужна помощь? Если да, я бы попросил вас проверить материал курса. Как учитель курсов C# сам я был бы ошибкой, чтобы просто дать вам ответ. – CrazyDart

ответ

1

Вам просто нужно создать новый Excel.Application, добавить новый Excel.Workbook и получить Excel.Worksheet от Excel.Workbook.

Затем вы можете перебрать ваши DataArray с вложенной for -loop и добавлять свои значения по мере необходимости, используя Cell -Property из Excel.Worksheet.

Затем вы сохраняете свою новую книгу и закрываете ее соответствующим образом. Это может выглядеть примерно так

private void SaveDataArray(string excelFileName, string[,] dataArray) 
{ 
    var xlApp = new Application(); 
    var xlWorkBook = xlApp.Workbooks.Add(); 
    var xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.Item[1]; 

    for (int i = 0; i < dataArray.GetLength(0); i++) 
    { 
    for (int j = 0; j < dataArray.GetLength(1); j++) 
    { 
     xlWorkSheet.Cells[j + 1, i + 1] = dataArray[i, j]; 
    } 
    } 

    xlWorkBook.SaveAs(excelFileName); 
    xlWorkBook.Close(true); 
    xlApp.Quit(); 
} 

И затем вызвать метод как этот

// create some sample data ... 
    string[,] dataArray = new string[1, 3]; 

    dataArray[0, 0] = "NAME"; 
    dataArray[0, 1] = "JAMES"; 
    dataArray[0, 2] = "ERIC"; 

    SaveDataArray("c:\\temp\\exceltest.xlsx", dataArray); 
+0

Спасибо, чувак, я тебя люблю, это просто помогло мне разобраться в процедурах, необходимых для экспорта документа Excel, это именно то, что я искал. <3 Время, чтобы закодировать «генератор образца» сейчас! Еще раз спасибо. – Beerbossa

0

Хотя у меня нет отличного ответа для вас, вы точно не дали нам интерполяцию, которую используете. Сначала я бы спросил, почему вы пытаетесь сделать это с трудом? Вы можете не использовать 3rd часть LIB как http://epplus.codeplex.com/

+0

Добавил часть моего кода, я думаю, я пойду тяжело, потому что я действительно не знаю, как это сделать иначе. Целью является возможность загрузить документ Excel, содержащий статистические данные о населении (имя, возраст, адрес, номер телефона и т. Д.).), возьмите образец этой популяции, затем сразу же экспортируйте его в другой документ excel. – Beerbossa