3

これは行コードの後に​​私の挿入です:

using (var spreadSheet = SpreadsheetDocument.Open(memoryStream, true, openSettings))
{

    var worksheet = GetWorksheet(spreadSheet);
    var worksheetPart = worksheet.WorksheetPart; 
    var sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();

    var newRowIndex = 9;
    foreach (var item in Items)
    {
        newRowIndex++;

        var newRow = new Row()
        {
            RowIndex = (uint)newRowIndex
        };
        var lastRow = sheetData.Elements<Row>().LastOrDefault(l => l.RowIndex == newRowIndex - 1); 

        sheetData.InsertAfter(newRow, lastRow);
    }

    worksheet.Save(); 

}

そして私のExcelレポートテンプレート:

ここに画像の説明を入力

このコードは正常に動作しますが、結果は正しくありません。問題は、新しい行を 9 行目の前に挿入する必要があることです。

どうすればこの問題を解決できますか?

4

3 に答える 3

1

わかりました!!!、すべてに感謝します。EPPlusでこの質問に答えます。

例えば:

  public static void AppendRefRow(string path)
    { 
        using (var pck = new ExcelPackage(new FileInfo(path)))
        {

            var ws = pck.Workbook.Worksheets.FirstOrDefault();
            var refRowIndex = 9;
            var refColumnIndex = 1; 

            for (int index = Items.Length - 1; index >= 0; index--)
            {
                ws.InsertRow(refRowIndex, 1, refRowIndex);

                ws.Cells[refRowIndex, refColumnIndex + 0].Value = index + 1;
                //TODO: write here other rows...

            }

            pck.Save();
        } 
于 2013-09-25T11:28:15.703 に答える
0

これには OpenXML SDK を使用することもできますが、挿入する前に挿入行の下にあるすべての行を手動で下に移動する必要があります。

便利な例ここここ.

しかし、EPPlus では、それほど複雑ではなく、コードも少なくなります。

于 2013-09-27T06:17:10.373 に答える