14

フォーム(C#)からExcelスプレッドシートに書き込み、空白の場合は特定の行を削除したいと思います。

スピードシートに完全にうまく書き込んで保存することはできますが、ユーザーが行a1、a2、a3、およびa4にデータを入力したとすると、a4とa29の間のすべての行を削除したいとします。

必要なのは、特定の範囲のセルを削除する方法を見つけることだけです。

ありがとう

4

5 に答える 5

12
// 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();
于 2017-11-07T06:14:20.390 に答える
9

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();
于 2012-09-04T00:03:49.450 に答える
9

これを使用できます。動作している..。

    _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サイトにアクセスしてください。

于 2013-02-01T08:08:39.003 に答える
3

セル(例: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から最初の行を削除します

于 2017-10-06T05:57:03.050 に答える
1

行を削除するには、次のような単純なコード行のみが必要です。

xlWorkSheet.Rows[NUMBER_ROW].Delete();
于 2019-08-13T08:15:36.683 に答える