2014-04-01 4 views
4

서버 이름과 IP 주소라는 두 개의 열이있는 템플릿 스프레드 시트 문서가 있습니다. 각 사전 키가 서버 열의 자체 셀에 들어가고 해당 값이 IP 열의 셀 옆에 표시되도록 스프레드 시트를 채울 수 있습니까?사전에서 스프레드 시트에 값을 추가하는 방법은 무엇입니까?

EPPlus 라이브러리를 사용하고 있지만 해당 항목에서 아무것도 찾을 수 없습니다. 다음은

내가 발견하고 시도 것입니다,하지만이 목록

using (ExcelPackage package = new ExcelPackage(_fileInfo)) 
{ 
    ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; 

    for (int i = 0; i < listOfIPs.Count; i++) 
    { 
     worksheet.Cells[i + 2, 1].Value = listOfIPs[i]; 
    } 

    package.Save(); 
} 

답변

5

그래서 저는 당신이 활성 시트에 대한 참조를 얼마나 확실하지 않다, EPPlus에 익숙하지 않다 당신은 쉽게 는 반복 스프레드 시트에 사전의 내용을 얻기 위해 피할 수 :

// create a sample dictionary and fill it 
Dictionary<string, string> myCol = new Dictionary<string, string>(); 
myCol.Add("server1", "ip1"); 
myCol.Add("server2", "ip2"); 

// grab a reference to the active Sheet 
// this may vary depending on what framework you are using 
Worksheet ws = Globals.ThisWorkbook.ActiveSheet as Worksheet; 

// create a Range variable 
Range myRange; 

// Transpose the keys to column A 
myRange = ws.get_Range("A1"); 
myRange.get_Resize(myCol.Keys.ToArray().Count(),1).Value = 
       ws.Parent.Parent.Transpose(myCol.Keys.AsEnumerable().ToArray()); 

// transpose the Values to column B 
myRange = ws.get_Range("B1"); 
myRange.get_Resize(myCol.Values.ToArray().Count(), 1).Value = 
       ws.Parent.Parent.Transpose(myCol.Values.AsEnumerable().ToArray()); 

디버깅 결과 예상대로

enter image description here

EPPlus와

난 당신이 내가 실제로에 값을 추가하려면 어떻게 vba4all.com

+0

사전에 여러 값이있는'LoadFromCollection' 방법이 있습니까? 'Dictionary > dict = new Dictionary >();과 같은 사전을로드하려고하면 값이 삽입되지 않습니다. 나는이 값을 Excel에서 얻는다 :'System.Collections.Generic.List1 [System.String]' –

+0

@DesmondLost 나는 EPPlus에 익숙하지 않지만 그것이 가능하다고 생각하지 않는다. –

1

을 위해 당신은 사전의 키에 액세스 할 수하고 목록 반복하는 것처럼 그들을 반복. 즉 VBA 모델에 대한 지식의 비트와 함께 순수 C# .NET을 수행 일단 비록 당신이 비트를 강구해야 -

 var foo = new Dictionary<string, string>(); // populate your dictionary 
     foreach(var key in foo.Keys) 
     { 
      var value = foo[key]; 
      // do stuff with 'key' and 'value', like put them into the excel doc 
     } 
+0

@이 (테스트되지 않은)처럼 시트에 VBA 컬렉션 반복 인쇄에

using (ExcelPackage package = new ExcelPackage(file)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test"); worksheet.Cells["A1"].LoadFromCollection(myColl, true, OfficeOpenXml.Table.TableStyles.Medium); package.Save(); } 

자세한 내용을 그것을 할 수 있다고 생각 스프레드 시트? –

+0

심각하게? 되풀이? 이것은 오래된 학교이고 많은 비효율적입니다. –

관련 문제