2012-08-16 97 views
1

我想找到一個支持在Excel中刪除整列和行的庫。不幸的是,EPPLUS和NPOI沒有支持這一點,他們的路線圖沒有提到這個功能。.Net中是否有任何免費的庫支持刪除整個excel列?

目前,我將寬度和高度設置爲零,但它不是最好的解決方案。 .Net中是否有免費的庫支持刪除整個excel列?

回答

0

在項目中引用Microsoft Excel 10.0對象庫。

設置以下using語句:

using Excel = Microsoft.Office.Interop.Excel; 

在你的類中,聲明以下變量:

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

品牌:

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

然後在下面的方法打開工作簿確定你有一種方法可以關閉工作簿

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); 
相關問題