web-dev-qa-db-fra.com

Est-il possible de copier des lignes (avec données, fusion, style) dans Excel en utilisant Epplus?

Le problème est que je dois insérer plusieurs fois des données dans Excel à partir de la collection à l'aide d'un modèle unique pour la collection entière.

using (var pckg = new ExcelPackage(new FileInfo(association.TemplatePath)))
{
    var workSheet = pckg.Workbook.Worksheets[1];
    var dataTable = WorksheetToDataTable(workSheet);
    /*Some stuff*/
    FindAndReplaceValue(workSheet, dictionary, row);
}

private DataTable WorksheetToDataTable(ExcelWorksheet oSheet)
{
    int totalRows = oSheet.Dimension.End.Row;
    int totalCols = oSheet.Dimension.End.Column;
    DataTable dt = new DataTable(oSheet.Name);
    DataRow dr = null;
    for (int i = 1; i <= totalRows; i++)
    {
        if (i > 1) dr = dt.Rows.Add();
        for (int j = 1; j <= totalCols; j++)
        {
            if (i == 1)
                dt.Columns.Add((oSheet.Cells[i, j].Value ?? "").ToString());
            else
                dr[j - 1] = (oSheet.Cells[i, j].Value ?? "").ToString();
        }
    }
    return dt;
}

Première photo - Mon modèle. Deuxième - Premier élément de la collection (avec données, style, fusion). Troisième - Les autres éléments ne contiennent que des données

This is my templateFirst element of collection has data, style, mergingOther elements got nothing besides data

17

Je viens de faire des copies de rangées

    for (int i = 0; i < invoiceList.Count; i++)
    {
        workSheet.Cells[1, 1, totalRows, totalCols].Copy(workSheet.Cells[i * totalRows + 1, 1]);
    }
24