2013-08-14 6 views
1

Единственный дисплей в файле excel - это имя столбца, а не данные, полученные из Gridview.Не извлекать данные из Gridview в Excel

Вот мои функции

private void ToCsV(DataGridView dGV, string filename) 
    { 
     string stOutput = ""; 
     // Export titles: 
     string sHeaders = ""; 

     for (int j = 0; j < dGV.Columns.Count; j++) 
      sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t"; 
     stOutput += sHeaders + "\r\n"; 
     // Export data. 
     for (int i = 0; i < dGV.RowCount - 1; i++) 
     { 
      string stLine = ""; 
      for (int j = 0; j < dGV.Rows[i].Cells.Count; j++) 
       stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t"; 
      stOutput += stLine + "\r\n"; 
     } 
     Encoding utf16 = Encoding.GetEncoding(1254); 
     byte[] output = utf16.GetBytes(stOutput); 
     FileStream fs = new FileStream(filename, FileMode.Create); 
     BinaryWriter bw = new BinaryWriter(fs); 
     bw.Write(output, 0, output.Length); //write the encoded file 
     bw.Flush(); 
     bw.Close(); 
     fs.Close(); 
    } 

Функция, которая называется данных из SQL

private void Details() 
    { 

     DataTable dt = new DataTable(); 
     SqlDataAdapter adp = new SqlDataAdapter("SELECT * FROM Customer WHERE CustomerID like " + txtCustomerID.Text, cn); 
     adp.Fill(dt); 
     gvHistory.DataSource = dt; 


    } 

Это мой код в кнопку, чтобы сохранить как файл Excel данные из GridView.

private void button2_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog sfd = new SaveFileDialog(); 
     sfd.Filter = "Excel Documents (*.xls)|*.xls"; 
     sfd.FileName = ""; 
     if (sfd.ShowDialog() == DialogResult.OK) 
     { 
      //ToCsV(dataGridView1, @"c:\export.xls"); 
      ToCsV(gvHistory, sfd.FileName); // Here dataGridview1 is your grid view name 
     } 

    } 

ответ

0

Я думаю, ваша проблема заключается в операторе отбора

Попробуйте что-то вроде

SELECT * FROM Customer WHERE CustomerID like '%" + txtCustomerID.Text + "%'" 

В дополнение к этому, вы можете захотеть взглянуть на использование DataAdapter Parameters, чтобы избежать SQL Injection

+0

Спасибо , но это не работает. – loypek