2013-07-05 12 views
-2

Как я могу экспортировать выбранные строки из dgv в excel? Ниже приведен мой код для импорта excel и нахождения значения.Как экспортировать только выбранные строки из datagridview в excel?

private void button1_Click(object sender, EventArgs e) 
    { 

     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     {    
      //this.textBox1.Text = openFileDialog1.FileName; 


      //string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textBox1.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes:\";"; 
      String PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openFileDialog1.FileName + ";Extended Properties=\"Excel 12.0 XML;HDR=Yes:\";";       
      OleDbConnection conn = new OleDbConnection(PathConn); 
      OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [sheet1$]", conn); 
      DataTable dt = new DataTable(); 
      myDataAdapter.Fill(dt); 
      dataGridView1.DataSource = dt; 

     } 
    } 


    private void button2_Click(object sender, EventArgs e) 
    { 
     dataGridView1.ClearSelection(); 
     dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
     try 
     {   
      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       if (row.Cells["Name"].Value.ToString().ToUpperInvariant().Contains(textBox1.Text.ToUpperInvariant())) 
       { 
        dataGridView1.Rows[row.Index].Selected = true;       
       } 

      } 

     } 
     catch (Exception) 
     { 

     } 
    } 
+0

Ваша задача только получать выбранные строки, или вы имеете проблему экспорта в Excel? – VahidNaderi

+0

приведенный выше код отлично подходит для выбора строк, но мне нужен код для экспорта в excel (только выбранный). – Pravii

ответ

0

Я предполагаю, что вы знаете, как экспортировать DataTable, чтобы преуспеть (вы можете использовать существующие библиотеки, как Aspose клеток или с использованием Interop), так что я просто написать код для создания, что DataTable:

private DataTable CreateDataTableFromSelectedRows() 
{ 
    var dtToExport = new DataTable(); 
    foreach(DataGridViewRow row in dataGridView1.SelectedRows) 
    { 
     var dr = row.DataBoundItem as DataRow; 
     dtToExport.ImportRow(dr); 
    } 
    return dtToExport; 
} 

Если вы используете Aspose cells было бы просто стать:

private void btnExportSelectedRows(object sender, EventArgs e) 
{ 
     string filePath = "C:\\test.xlsx"; 
     Aspose.Cells.Workbook wb = new Aspose.Cells.Workbook(); 
     wb.FileFormat = Aspose.Cells.FileFormatType.Xlsx; 

     Worksheet sheet = wb.Worksheets[0]; 

     DataTable dt = CreateDataTableFromSelectedRows(); 
     sheet.Cells.ImportDataTable(dt, true, "A1"); 
     wb.Save(filePath); 
} 

Но используя код экспорта вы предоставите все это стало: (я удалил существующие замечания по код для краткости)

private void button1_Click_1(object sender, EventArgs e) 
{ 
    Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); 
    Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); 
    Microsoft.Office.Interop.Excel._Worksheet worksheet = null;     
    app.Visible = true; 
    worksheet = workbook.Sheets["Sheet1"]; 
    worksheet = workbook.ActiveSheet; 
    worksheet.Name = "Exported from gridview"; 
    for(int i=1;i<dataGridView1.Columns.Count+1;i++) 
    { 
     worksheet.Cells[1, i] = dataGridView1.Columns[i-1].HeaderText; 
    } 

    // It's the part which we are interested in 
    // we just need to change dataGridView1.Rows to dataGridView1.SelectedRows 
    for (int i=0; i < dataGridView1.SelectedRows.Count ; i++) 
    { 
     for(int j=0;j<dataGridView1.Columns.Count;j++) 
     { 
      worksheet.Cells[i + 2, j + 1] = dataGridView1.SelectedRows[i].Cells[j].Value.ToString(); 
     } 
    } 

    workbook.SaveAs("c:\\output.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); 

    app.Quit(); 
} 

Я думаю, это будет трюк.

+0

вы также можете указать код для экспорта dgv в excel, включая указанный выше код. Извините, я новичок в этом поле. – Pravii

+0

У меня есть код для экспорта dgv в excel, но он не будет экспортировать выбранные строки. Если вы хотите, я вам предоставит. Спасибо. – Pravii

+0

Я думаю, что это сэкономит нам время, поэтому, пожалуйста, предоставьте этот код. – VahidNaderi

0

Смотрите ниже код для экспорта в Excel:

private void button1_Click_1(object sender, EventArgs e) 
    { 

     // 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 = "Exported from gridview"; 


     // storing header part in Excel 
     for(int i=1;i<dataGridView1.Columns.Count+1;i++) 
     { 
      worksheet.Cells[1, i] = dataGridView1.Columns[i-1].HeaderText; 
     } 


     // storing Each row and column value to Excel sheet 
     for (int i=0; i < dataGridView1.Rows.Count-1 ; i++) 
     { 
      for(int j=0;j<dataGridView1.Columns.Count;j++) 
      { 
       worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
      } 
     } 


     // save the application 
     workbook.SaveAs("c:\\output.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(); 
    } 
Смежные вопросы