2015-09-08 10 views
0

Мне нужно создать файл Excel с помощью кода C#.Расширение диапазона рабочих листов Excel

Я делаю это так, что было от Microsoft/MSDN https://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx

рекомендованного На примере MSDN, клетки колеблются фиксировано:

// Select the Excel cells, in the range c1 to c7 in the worksheet. 
Range aRange = ws.get_Range("C1", "C7"); 

if (aRange == null) 
{ 
    Console.WriteLine("Could not get a range. Check to be sure you have the correct versions of the office DLLs."); 
} 

// Fill the cells in the C1 to C7 range of the worksheet with the number 6. 
Object[] args = new Object[1]; 
args[0] = 6; 
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

Но в моей функции, что я пишу

public void Create ExcelFile(List<string> strList); 

Мне нужно увеличить количество строк до количества объектов, которые я получаю в параметре функции List.

Как это сделать?

спасибо.

ответ

0

Я нашел ответ.

Это мой код:

int i = 1; 
foreach (ItemDetailsPrice item in strList) 
{ 
    //xlWorkSheet.Cells[i, 0] = new Cell("Code"); 
    aRange = (Excel.Range)xlWorkSheet.Cells[i, 1]; 
    args[0] = plant; 
    aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

    aRange = (Excel.Range)xlWorkSheet.Cells[i, 2]; 
    args[0] = item.ItemCode; 
    aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

    aRange = (Excel.Range)xlWorkSheet.Cells[i, 3]; 
    args[0] = item.ItemName; 
    aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

    aRange = (Excel.Range)xlWorkSheet.Cells[i, 4]; 
    args[0] = item.ItemPrice; 
    aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

    aRange = (Excel.Range)xlWorkSheet.Cells[i, 5]; 
    args[0] = "Y"; 
    aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args); 

    i++; 
} 
1

Поскольку вы используете объект списка типа (согласно вашему требованию), вы можете сохранить диапазон запуска постоянная, то есть, в данном случае «С1» и конец диапазон может быть подсчетом ваших строковых значений в списке коллекций.

Внутри вашего метода CreateExcelFile, который имеет вход List<string> strList, введите endRange, как показано ниже, и вы можете использовать его, когда получите Range.

string endRange = string.Concat("C", strList.Count.ToString()); 
Range aRange = ws.get_Range("C1", endRange); 

Надеюсь, это решит вашу проблему.

Смежные вопросы