Pertanyaan .Net Excel Interop Menghapus lembar kerja


Saya mencoba menghapus lembar kerja dari dokumen excel dari aplikasi .Net c # 3.5 dengan kelas Excel interop (untuk excel 2003).

Saya mencoba banyak hal seperti:

Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
worksheet.Delete();

Tidak berfungsi dan tidak ada kesalahan ...


20
2018-03-24 18:56


asal


Jawaban:


Setelah lebih dari satu jam, saya menemukan jawabannya:

xlApp.DisplayAlerts = false;
worksheet.Delete();
xlApp.DisplayAlerts = true;

59
2018-03-24 19:09



Ketika berhadapan dengan menghapus Lembar Kerja Excel, ada dua hal penting yang perlu diketahui:

  1. Excel interop terhitung dari 1 (dan bukan dari nol), oleh karena itu, menghapus item kedua akan menyebabkan item ketiga menggantikan tempatnya !. jadi, cara yang tepat untuk menghapus worksheets adalah dari bertahan hingga yang pertama:

    // Remove LAST worksheet
    MyWorkBook.Worksheets[3].Delete();
    
    // and only then remove the second (which is the last one)
    MyWorkBook.Worksheets[2].Delete();
    

    atau, Anda dapat menghapus item kedua ([2]) pada daftar dua kali, yang akan memberi Anda hasil yang sama.

  2. Baris berikut akan buang pengecualian ketika Anda hanya punya satu lembar kerja tersisa:

     MyWorkBook.Worksheets[1].Delete();
    

10
2017-07-01 14:53



Penting juga untuk dicatat bahwa buku kerja harus berisi setidaknya satu lembar kerja; ini berarti Anda tidak dapat menghapus semua lembar kerja dalam buku kerja.


7
2018-04-28 21:30



Microsoft.Office.Interop.Excel.Worksheet worksheet = Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets[1];
worksheet.Delete();

0
2018-03-20 05:26



Coba cari worksheet berdasarkan nama:

var app = new Microsoft.Office.Interop.Excel.Application();
var workbook = app.Workbooks.Add();
((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Sheet3"]).Delete();

0
2018-04-29 08:00



kita bisa menghapus lembar kerja seperti ini

 Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

                if (xlApp == null)
                {

                    return;
                }


                xlApp.DisplayAlerts = false;
                string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
                                        + "\\Sample.xlsx";
                Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
                Excel.Sheets worksheets = xlWorkBook.Worksheets;

                worksheets[4].Delete();
                worksheets[3].Delete();
                xlWorkBook.Save();
                xlWorkBook.Close();

                releaseObject(worksheets);
                releaseObject(xlWorkBook);
                releaseObject(xlApp);

dan gunakan ini

  static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                throw ex;

            }
            finally
            {
                GC.Collect();
            }
        }

0
2017-09-07 10:39



Kami menghapus lembar kerja excel dari aplikasi konsol c # seperti ini:

 Microsoft.Office.Interop.Excel.Worksheet worksheet = 
 (Worksheet)workbook.Worksheets["Worksheet_Name" (or) "Countings"];
 worksheet.Delete();

0
2018-06-22 10:24