Member 14649908 Ответов: 1

Как удалить пустые/пустые строки из файла excel


Привет Когда несколько строк DataGridView выбираются случайным образом, а не последовательно, то экспортированный файл excel содержит заполненные строки вместе с пустыми строками между заполненными строками. Пустые строки не нужны.

Как удалить эти пустые/пустые строки из экспортированного файла с помощью кодирования.Пожалуйста, отредактируйте код.Thanksssssssssssss

Что я уже пробовал:

private void btnExportToExcel_Click(object sender, EventArgs e)
        {
            DataGridViewRow row = new DataGridViewRow();
            // Creating an ArrayList 
            ArrayList myList = new ArrayList();

            for (int i = 0; i < CategoryGV.Rows.Count; i++)
            {
                row = CategoryGV.Rows[i];

                if (row.Cells["chkBox"].Value.ToString()=="1")
                {
                   // int id = Convert.ToInt16(row.Cells["id"].Value);
                    myList.Add(row.Index);    
                }

            }
            if(myList.Count > 0)
            {
                exportSelectedRowsToExcel(myList);
            }
            else
            {
                MessageBox.Show("No rows selected");
                Console.WriteLine(row.Cells["chkBox"].Value);
            }

        }



public void exportSelectedRowsToExcel(ArrayList arrRows)
        {
            // creating Excel Application  
            Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();

            // creating new WorkBook within Excel application  
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);

            // creating new Excelsheet in workbook  
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

            // see the excel sheet behind the program  
            app.Visible = true;

            // get the reference of first sheet. By default its name is Sheet1.  
            // store its reference to worksheet  
            worksheet = workbook.Sheets["Sheet1"];
            worksheet = workbook.ActiveSheet;

            // changing the name of active sheet  
            worksheet.Name = DateTime.Now.ToString("yyyyMMddHHmmssfff");

                

            // storing header part in Excel  
            for (int i = 1; i < CategoryGV.Columns.Count + 1; i++)
            {
                worksheet.Cells[1, i] = CategoryGV.Columns[i - 1].HeaderText;
            }
            // storing Each row and column value to excel sheet  
            
            foreach (int i in arrRows)
            {
                for (int j = 0; j < CategoryGV.Columns.Count; j++)
                {
                    worksheet.Cells[i + 2, j + 1] = 
                         Convert.ToString(CategoryGV.Rows[i].Cells[j].Value);
                }
            }

            
            // save the application 
            
            workbook.SaveAs(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ExportedCategory.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            // Exit from the application  
            app.Quit();
        }

ZurdoDev

Как уже упоминалось в другом, который вы написали, отладьте свой код и выясните, что происходит. Не просите людей просто выяснить это для вас.

1 Ответов

Рейтинг:
1

Richard MacCutchan

foreach (int i in arrRows)
{
    for (int j = 0; j < CategoryGV.Columns.Count; j++)
    {
        worksheet.Cells[i + 2, j + 1] = 
             Convert.ToString(CategoryGV.Rows[i].Cells[j].Value);
    }
}

Значения в arrRows - это значения Индекса строк из таблицы данных. Поэтому, если вы отметили строки 3, 7, 8 и 12, это номера строк, которые вы добавите в свой рабочий лист. Однако поскольку вы используете эти значения для обращения к рабочему листу, строки 1,2,4,5,6,9,10 и 11 будут пустыми. Вам нужно использовать правильный последовательный счетчик индексов для адресации строк, в которых вы храните значения из datagrid.