フォーム(C#)からExcelスプレッドシートに書き込み、空白の場合は特定の行を削除したいと思います。
スピードシートに完全にうまく書き込んで保存することはできますが、ユーザーが行a1、a2、a3、およびa4にデータを入力したとすると、a4とa29の間のすべての行を削除したいとします。
必要なのは、特定の範囲のセルを削除する方法を見つけることだけです。
ありがとう
// Here is the answers to
// 1. Delete entire row - Below rows will shift up
// 2. Delete few cells - Below cells will shift up
// 3. Clear few cells - No shifting
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application ExcelApp = new Excel.Application();
Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(ResultFilePath);
ExcelApp.Visible = true;
Excel.Worksheet ExcelWorksheet = ExcelWorkbook.Sheets[1];
Excel.Range TempRange = ExcelWorksheet.get_Range("H11", "J15");
// 1. To Delete Entire Row - below rows will shift up
TempRange.EntireRow.Delete(Type.Missing);
// 2. To Delete Cells - Below cells will shift up
TempRange.Cells.Delete(Type.Missing);
// 3. To clear Cells - No shifting
TempRange.Cells.Clear();
Rangeオブジェクトを使用してそれを行うことができます。ここでは、Excelの相互運用機能を使用していると想定しています。
あなたがあなたの本を開いているとしましょう、そして範囲を設定しそしてそれを削除しますそれはこのように見えるはずです
ApplicationClass excel = new ApplicationClass();
//Abrir libro y seleccionar la hoja adecuada aqui
//...
Microsoft.Office.Interop.Excel.Range cel = (Range)excel.Cells[rowIndex, columnIndex];
cel.Delete();
これを使用できます。動作している..。
_Application docExcel = new Microsoft.Office.Interop.Excel.Application { Visible = false };
dynamic workbooksExcel = docExcel.Workbooks.Open(@"C:\Users\mahmut.efe\Desktop\Book4.xlsx");
var worksheetExcel = (_Worksheet)workbooksExcel.ActiveSheet;
((Range)worksheetExcel.Rows[2, Missing.Value]).Delete(XlDeleteShiftDirection.xlShiftUp);
workbooksExcel.Save();
workbooksExcel.Close(false);
docExcel.Application.Quit();
詳細については、このWebサイトにアクセスしてください。
セル(例:A1)を指定し、そのセルを含む行全体を範囲として検索してから、行を削除できます。
excel.Worksheet sheet = (excel.Worksheet)excelWorkBook.Sheets["sheet1"];
excel.Range cells = (excel.Range)sheet.Range["A1", Type.Missing];
excel.Range del = cells.EntireRow;
del.Delete();
上記のコードは、sheet1から最初の行を削除します
行を削除するには、次のような単純なコード行のみが必要です。
xlWorkSheet.Rows[NUMBER_ROW].Delete();