2013-08-14 6 views
1

엑셀 파일의 유일한 표시는 열 이름이며 Gridview의 데이터는 아닙니다. 여기 Gridview에서 Excel로 데이터를 가져 오지 않음

는 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; 


    } 

에서 데이터를 호출

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(); 
    } 

기능 내 기능입니다이 엑셀의 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

나는 당신의 문제가

, 당신은 SQL Injection

+0

감사합니다 피하기 위해 DataAdapter Parameters를 사용하여보고 할 수 있습니다 것과 또한

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

같은 시도 선택 성명에서 생각 ,하지만 작동하지 않습니다. – loypek

관련 문제