web-dev-qa-db-ja.com

C#EPPlusはExcelシートから行を削除します

私は現在、必要のない情報を含む先頭の行を含むExcelファイルを使用しています。これらの余分な行は、下のヘッダー行にそのデータをインポートすることにも混乱します。だから私はデータを操作するためにそれらを削除しようとしています。

using (var pack = new ExcelPackage(myFileInfo))
{
    // Should return the sheet name
    var ws = pack.Workbook.Worksheets.FirstOrDefault();
    // Should Delete rows 1-5 and shift up the rows after deletion
    ws.DeleteRow(1,5,true);
}

上記のようなことがうまくいくと思っていたのですが、あまり成功していません。

目標は、行1〜5を削除し、残りのデータをシフトアップして(おそらくマージが機能するでしょうか?)、それをデータテーブルに変換することです。

Excelシートから行を削除するためのヒントやリソースがあります(問題が発生する場所であるため、データテーブルに移動する前に)

9

あなたが持っているコードは最初の5行を削除しますが、修正されたファイルで何かをする必要もあります。次の方法で保存できます。

pack.Save();

または、次の方法で新しい場所に保存します。

pack.SaveAs(new FileInfo(outputFilePath));

完全な例をアップロードしました ここ

static void Main(string[] args)
{
    var myFileInfo = new FileInfo("Demo.xlsx");
    using (var pack = new ExcelPackage(myFileInfo))
    {
        var ws = pack.Workbook.Worksheets.FirstOrDefault();
        ws.DeleteRow(1, 5, true);
        pack.SaveAs(new FileInfo("output.xlsx"));
    }
}

ソリューションをビルドして実行すると、入力ファイル(Demo.xlsx)でこれからデモファイルが変換されることがわかります。

input file screengrab

出力ファイルでこれに:

output file screengrab

最初の5行が削除され、すべてが上にシフトされます。

5
Stewart_R