2009-11-29 2 views

답변

0

가장 간단한 방법은 microsoft.visualbasic.fileio (msdn link)의 textfieldparser 클래스를 사용하는 것입니다. psuedocode는 다음과 같습니다.

textfieldparser 객체를 만들고 파일을 열기 (* .csv)로 설정하고 디코딩합니다.

열 머리글을

DataGridView를 통해 루프 또는 지금 엑셀에서 파일을 열 수있는 텍스트 파일의 datsource 인쇄

사용자 물품.

저의 빠른 답변입니다.이를 수행하는 더 좋은 방법이 있는지 살펴 보겠습니다.

2

copyfromrecordset이 가장 빠름을 발견했습니다.

Dim xlApp As New Excel.Application 
    Dim xlWBook As Excel.Workbook = xlApp.Workbooks.Add 
    Dim XlSheet As Excel.Worksheet = CType(xlWBook.Worksheets("Sheet1"), Excel.Worksheet) 
    With XlSheet 
     'insert column names 
     For i = 2 To dt.Columns.Count - 1 
      .Cells(1, i).value = dt.Columns(i - 1).ColumnName 
     Next 
     'insert the actual data 
     .Range("A2").CopyFromRecordset(datset) 

    End With 
+0

고맙습니다.하지만 코드에 대해 더 자세히 설명해 주시겠습니까? –

0

개인 서브를 Button1_Click (은 System.Object로 ByVal의 보낸 사람, 경우 System.EventArgs으로 ByVal의 전자) Button1.Click DATAGRIDVIEW_TO_EXCEL ((DataGridView1)) '매개 변수 처리 : 당신의 DataGridView를 종료 하위

개인 서브는 DATAGRIDVIEW_TO_EXCEL (ByVal의 DGV DataGridView에 현재) 시도 희미한 DTB = 새로운 DataTable을, 정수로 RWS, CLS으로 정수

For CLS = 0 To DGV.ColumnCount - 1 ' COLUMNS OF DTB 
     DTB.Columns.Add(DGV.Columns(CLS).Name.ToString) 
    Next 

    Dim DRW As DataRow 

    For RWS = 0 To DGV.Rows.Count - 1 ' FILL DTB WITH DATAGRIDVIEW 
     DRW = DTB.NewRow 

     For CLS = 0 To DGV.ColumnCount - 1 
      Try 
       DRW(DTB.Columns(CLS).ColumnName.ToString) = DGV.Rows(RWS).Cells(CLS).Value.ToString 
      Catch ex As Exception 

      End Try 
     Next 

     DTB.Rows.Add(DRW) 
    Next 

    DTB.AcceptChanges() 

    Dim DST As New DataSet 
    DST.Tables.Add(DTB) 
    Dim FLE As String = "" ' PATH AND FILE NAME WHERE THE XML WIL BE CREATED (EXEMPLE: C:\REPS\XML.xml) 
    DTB.WriteXml(FLE) 
    Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE 
    Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL 

Catch ex As Exception 
    MsgBox(ex.ToString) 
End Try 

최종 하위

0

나는 그것과 나를 위해 그 작품을 테스트했습니다.

Dim xlApp As Microsoft.Office.Interop.Excel.Application 
    Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
    Dim misValue As Object = System.Reflection.Missing.Value 
    Dim i As Integer 
    Dim j As Integer 

    Try 

     xlApp = New Microsoft.Office.Interop.Excel.Application 
     xlApp.Application.DisplayAlerts = False 
     xlWorkBook = xlApp.Workbooks.Add(misValue) 
     xlWorkSheet = xlWorkBook.Sheets.Add() 
     xlWorkSheet.Name = "MysqlSheet" 

     For i = 0 To Form2.DataGridView2.RowCount - 1 
      For j = 0 To Form2.DataGridView2.ColumnCount - 1 
       For k As Integer = 1 To Form2.DataGridView2.Columns.Count 
        xlWorkSheet.Cells(1, k) = Form2.DataGridView2.Columns(k - 1).HeaderText 
        xlWorkSheet.Cells(i + 2, j + 1) = Form2.DataGridView2(j, i).Value 
       Next 
      Next 
     Next 

     xlWorkSheet.SaveAs("c:\") 'Where u want to save 
     xlWorkBook.Close() 
     xlApp.Quit() 




    Catch ex As Exception 
     MsgBox(ex.Message) 
    Finally 

    End Try 
관련 문제