使用EPPLUS将LoadFromCollection的List或数组添加到行范围

时间:2018-06-16 18:11:27

标签: c# excel list range epplus

尝试使用ExcelRange和LoadFromCollection使用EPPLUS将列表或数组添加到excel中的行,但是填充的是列而不是一行。代码:

List<string> cabeceras = new List<string>();
        cabeceras.Add("Fecha");
        foreach (ValidationParameterData estacion in informacionSeleccion.Parameters) {
            foreach (string parameter in estacion.Parameters) {

                cabeceras.Add(estacion.Station + parameter);
                cabeceras.Add("L");
            } 
        }
        string[] vals = cabeceras.ToArray();

        using (ExcelRange rng = ws.Cells[4,1,4,cabeceras.Count])
        {
            rng.Style.Font.Size = 16;
            rng.Style.Font.Bold = true;
            rng.LoadFromCollection(vals);//or cabeceras directly 
        }

同时尝试使用数组和列表:

ExcelRange rng = ws.Cells["A4:M4"]  

同样的事情发生了,A列从上到下填充而不是从左到右填充行,我做错了什么?还有其他功能吗?

谢谢和问候

1 个答案:

答案 0 :(得分:1)

以下是我解决问题的方法。请参阅此代码的下方,了解我的试验和磨难,请参阅Range类。

using System;
using OfficeOpenXml;
using System.Collections.Generic;
using System.IO;

namespace eeplusPractice
{
    class Program
    {
        static void Main(string[] args)
        {
            FileInfo newFile = new FileInfo(@"C:\Users\Evan\Desktop\new.xlsx");
            ExcelPackage pkg = new ExcelPackage(newFile);
            ExcelWorksheet wrksheet = pkg.Workbook.Worksheets[0];

            List<string> cabeceras = new List<string>();

            for (int x = 1; x < 5; x++)
            {
                cabeceras.Add("HELLO");
            }

            int row = 4;

            for(int col = 1; col <= cabeceras.Count; col++)
            {
                int counter = col;
                wrksheet.Cells[row, col].Value = cabeceras[counter];
            }

            pkg.Save();
        }
    }
}

我尝试使用foreach循环遍历rng对象,但只有一个类能够运行,并且与上面遇到的问题相同。它不能将范围内的每个单元格视为可以访问的不同对象。方法

enter image description here

如果我有时间,我可以写一个方法LoadRangeHorizo​​ntal,但是现在up应该可以正常工作。

GL lemme知道它是否有效。