1

Excelで列と行全体の削除をサポートするライブラリを見つけたいです。残念ながら、EPPLUS と NPOI はこれをサポートしておらず、ロードマップにもこの機能について言及されていません。

現在、幅と高さをゼロに設定していますが、これは最善の解決策ではありません。Excel列全体を削除する.Netサポートに無料のライブラリはありますか?

4

1 に答える 1

0

プロジェクトで Microsoft Excel 10.0 Object Library を参照します。

次の using ステートメントを設定します。

using Excel = Microsoft.Office.Interop.Excel;

クラスで、次の変数を宣言します。

private Excel.Application _app;
private Excel.Workbooks _books;
private Excel.Workbook _book;
protected Excel.Sheets _sheets;
protected Excel.Worksheet _sheet;

次に、次の方法でワークブックを開きます。

protected void OpenExcelWorkbook(string fileName) 
{
_app = new Excel.Application();

if (_book == null) 
{
_books = _app.Workbooks;
_book = _books.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
_sheets = _book.Worksheets;
}
}

ワークブックを閉じるメソッドがあることを確認してください

protected void CloseExcelWorkbook() {
_book.Save();
_book.Close(false, Type.Missing, Type.Missing);
}

また、Excel オブジェクトへの参照をクリーンアップするメソッドが必要です (それらは COM であるため)。そうしないと、Excel は実行されたままになります。

protected void NAR(object o) {

try {
if(o != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}

finally {
o = null;
}
}

行を削除するワークシートを選択できるようになりました。

OpenExcelWorkbook(@"d:\temp\yourworkbook.xls");
_sheet = (Excel.Worksheet)_sheets[1];
_sheet.Select(Type.Missing);
Excel.Range range = _sheet.get_Range("A7:A7", Type.Missing);
range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
NAR(range);
NAR(_sheet);
CloseExcelWorkbook();
NAR(_book);
_app.Quit();
NAR(_app);
于 2012-08-16T05:58:34.690 に答える