2014-04-01 32 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,所以我不知道你怎么弄的参考活动工作表 - 你需要弄清楚这一点,虽然一旦这样做了纯粹的C#一个有关VBA模型比特知识您可以轻松地避免任何重复让你的字典的内容对电子表格:

// 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我认为你可以做这样的(未经测试)

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(); 
} 

在VBA集合迭代和印刷板材更多细节@vba4all.com

+0

有没有办法'LoadFromCollection'字典有多个值?当我尝试加载一个如下所示的字典:'Dictionary > dict = new Dictionary >();'这些值不会被插入。我在Excel中得到这个值:'System.Collections.Generic.List1 [System.String]' –

+0

@DesmondLost我对EPPlus并不熟悉,但我不认为这是可能的... –

1

你可以只访问一个字典的键,并在它们之间迭代,就像你是遍历列表。

 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

实际上,我怎么添加值的电子表格? –

+0

认真吗?迭代?这是一所旧学校,效率很低。 –