code

Eplus를 사용하여 Excel에서 행(데이터 포함, 병합, 스타일 포함)을 복사할 수 있습니까?

starcafe 2023. 6. 22. 22:06
반응형

Eplus를 사용하여 Excel에서 행(데이터 포함, 병합, 스타일 포함)을 복사할 수 있습니까?

문제는 컬렉션 전체에 대해 단일 템플릿을 사용하여 컬렉션에서 엑셀에 여러 번 데이터를 삽입해야 한다는 것입니다.

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

첫 번째 사진 - 내 템플릿.두 번째 - 컬렉션의 첫 번째 요소(데이터, 스타일, 병합 포함).셋째 - 다른 요소에는 데이터만 있습니다.

This is my template First element of collection has data, style, merging Other elements got nothing besides data

방금 행을 복사했습니다.

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

범위를 복사하려면 다음을 사용합니다.

workSheet.Cells["A1:I1"].Copy(workSheet.Cells["A4:I4"]);

언급URL : https://stackoverflow.com/questions/30600595/is-it-possible-to-copy-row-with-data-merging-style-in-excel-using-epplus

반응형