2014-01-23 3 views
0

VBP에서 datagridview로 가져 오기를 시도하는 데 처음으로 도움을주십시오. 시나리오는 Excel 파일에 너무 많은 데이터가 있으므로 B 열에서 시작하는 값을 I 열로 가져와야하며 시작 행은 B 열에 "START"라는 단어가 있어야하고 " 종료". 지금까지이 코드가 내 코드였습니다 :vb.net의 특정 열과 행을 사용하여 csv 파일을 특정 열과 행으로 가져 오십시오.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop 
    OpenFileDialog1.Filter = "CSV Files (*.csv)|*.csv" 

    If OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then 

     Try 
      Dim fi As New FileInfo(OpenFileDialog1.FileName) 
      Dim sConnectionStringz As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Text;Data Source=" & fi.DirectoryName 
      Dim objConn As New OleDbConnection(sConnectionStringz) 
      objConn.Open() 
      'DataGridView1.TabIndex = 1 
      Dim objCmdSelect As New OleDbCommand("SELECT * FROM " & fi.Name, objConn) 
      Dim objAdapter1 As New OleDbDataAdapter 
      objAdapter1.SelectCommand = objCmdSelect 
      Dim objDataset1 As New DataSet 
      objAdapter1.Fill(objDataset1) 
      '--objAdapter1.Update(objDataset1) '--updating 
      DataGridView1.DataSource = objDataset1.Tables(0).DefaultView 

      objConn.Close() 
     Finally 


     End Try 


    End If 
End Sub 

이 코드는 DataGridview의 모든 데이터를 가져 오거나 표시합니다. 이미 사방을 검색했지만 아무 것도 적합하지 않은 것 같습니다. 감사합니다 어쨌든 ..이 예제 파일이었다

:

CLIENT-RD/OT HC 8 7 8 10 11 12 10 
C-RD/OT 6:00 0 0 0 0 0 0 0 
C-RD/OT 7:30 0 0 0 0 0 0 0 
C-RD/OT 8:00 0 0 0 0 0 0 0 
C-RD/OT 9:00 8 7 8 10 11 12 10 
C-RD/OT 10:00 0 0 0 0 0 0 0 
C-RD/OT 12:00 0 0 0 0 0 0 0 
C-RD/OT 1:30 0 0 0 0 0 0 0 

ML  0 0 0 0 0 0 0 
VL/SIL 2 4 1 1 1 2 2 
SL   1 0 1 1 1 0 0 

START     20-Jan 21-Jan 22-Jan 23-Jan 24-Jan 25-Jan 26-Jan 
CEBU      MON TUE  WED THU  FRI  SAT SUN 
Team Edna - Esca        
Adarayan, Dianne   RD RD 6:00 AM 6:00 AM 6:00 AM 6:00 AM 1:30 PM 
Bacalla, Catherine  VL VL RD/OT 7:30 7:30 AM 7:30 AM 7:30 AM RD 
Dela Cruz, Mary Ann  6:00 AM 7:30 AM RD RD 7:30 AM 7:30 AM 6:00 AM 
Dumana, John Carlos  1:30 PM 1:30 PM 1:30 PM RD RD 1:30 PM 1:30 PM 
Macabodbod, Evelyn  9:00 AM 9:00 AM 9:00 AM 9:00 AM RD RD/OT 9:00 9:00 AM 
Mariano, Kristine   1:30 PM RD/OT 1:30 1:30 PM 1:30 PM 1:30 PM RD 7:30 AM 
Santiago, Gretchen  RD/OT 7:30 6:00 AM 7:30 AM 7:30 AM 1:30 PM 1:30 PM RD 
END 
+0

첫째, 'SELECT * 해달라고'당신이 원하는 열, 열 필터링을 담당 열 I. 통해 열 B에 관련하는, 즉 사람을 지정합니다. 행의 경우 START 및 END 사이의 행을로드 된 새 임시 파일로 이동하도록 CSV를 사전 처리해야 할 수 있습니다. START와 END는 데이터 범위와 같은 다른 것을 나타 냅니까? 귀하의 게시물을 편집하여 데이터가없는 데이터 분석을 거의 불가능하게하는 것처럼 CSV를 조금만 추가하십시오. – Plutonix

+0

Excel에서 특정 열을 선택하는 방법 @Plutonix – Aljie

+0

Excel에서 오는 경우 왜 코드에서 수행하지 않고 원하는 '범위'를 추출하고 내보내십시오. 또한 CSV처럼 보이지 않습니다. C가 없습니다. 텍스트로 열어야하고 임시 파일에 원하는 행을 추출해야 할 수도 있습니다. – Plutonix

답변

1

이 시도 :

Dim objCmdSelect As New OleDbCommand("SELECT * FROM [Sheet1$B14:I24]", objConn) 

은 마지막 열/행 기록이 B14starting ROWI24 가정 할 수 있습니다 .

업데이트 :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop 
    OpenFileDialog1.Filter = "CSV Files (*.csv)|*.csv" 

    If OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then 

     Try 
      Dim fi As New FileInfo(OpenFileDialog1.FileName) 
      Dim sConnectionStringz As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Text;Data Source=" & fi.DirectoryName & ";" & "Extended Properties=""Excel 8.0;HDR=NO;IMEX=1""" 
      Dim objConn As New OleDbConnection(sConnectionStringz) 
      objConn.Open() 

      Dim objAdapter1 As New OleDbDataAdapter("SELECT * FROM [Sheet1$B14:I24]", objConn) 

      Dim objDataset1 As New DataSet 
      objAdapter1.Fill(objDataset1) 

      DataGridView1.DataSource = objDataset1.Tables(0).DefaultView 

      objConn.Close() 
     Finally 


     End Try 


    End If 
End Sub 
+0

죄송하지만 죄송합니다. "Microsoft Jet 데이터베이스 엔진이 'Sheet1 $ B14_I24.txt'개체를 찾을 수 없습니다. 개체가 존재하고 이름과 경로 이름의 철자가 올바른지 확인하십시오." csv 파일은 openDialogbox에서 가져옵니다. – Aljie

+0

** Dim objAdapter1 새로운 OleDbDataAdapter ("SELECT * FROM [Sheet1 $ B14 : I24]", objConn) ** 건너 뛰기 ** OledbCommand ** 대신 ** OledbDataAdapter *를 직접 사용하십시오. * 그냥 시도 .. – Unknownymous

+0

@ Aljie 내 업데이트 된 게시물을 참조하십시오 .. 나는 당신의 연결 문자열에 몇 가지 속성을 추가합니다. – Unknownymous

관련 문제