2011-01-21 2 views

ответ

1

Это уже хорошо покрыто переполнением стека. Прежде всего, для создания электронных таблиц Excel, проверить этот предыдущий пост:

Рядом пронестись файлы, проверить эти прекрасные ответы:

Если вы хотите, чтобы автоматически транслировать его обратно пользователю, то попробуйте эти ответы:

0

Private Sub CopySheet() Dim CMD Как OleDbCommand Dim дт As String Dim Д.С. Как DataSet = New DataSet() Dim connString As String = «Provider = Microsoft.Jet.OLEDB.4.0; источник данных = E: \ EXCEL \ From.xls; Extended Properties = Excel 8.0" Dim oledbConn Как OleDbConnection = Новый OleDbConnection (connString) Try oledbConn.Open() Для я = 0 К 1 Если я = 0 Тогда CMD = Новый OleDbCommand («SELECT * FROM [Sheet1 $]», oledbConn) dt = "Sheet3" Else cmd = New OleDbCommand ("SELECT * FROM [Sheet 2 $]», oledbConn) дт = "Лист4" End If Dim oleda Как OleDbDataAdapter = Новый OleDbDataAdapter() oleda.SelectCommand = CMD oleda.Fill (DS, DT) Следующая

 ExportDatasetToExcel(ds, "dd") 
    Catch 
    Finally 
     oledbConn.Close() 
    End Try 
End Sub 

Public Sub ExportDatasetToExcel(ByVal ds As DataSet, ByVal strExcelFile As String) 

    Dim conn As New OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\EXCEL\To.xls;Extended Properties=Excel 8.0")) 
    conn.Open() 
    Dim strTableQ(ds.Tables.Count) As String 
    Dim i As Integer = 0 
    'making table query 
    For i = 0 To ds.Tables.Count - 1 
     strTableQ(i) = "CREATE TABLE [" & ds.Tables(i).TableName & "](" 
     Dim j As Integer = 0 
     For j = 0 To ds.Tables(i).Columns.Count - 1 
      Dim dCol As DataColumn 
      dCol = ds.Tables(i).Columns(j) 
      strTableQ(i) &= " [" & dCol.ColumnName & "] varchar(255) , " 
     Next 
     strTableQ(i) = strTableQ(i).Substring(0, strTableQ(i).Length - 2) 
     strTableQ(i) &= ")" 
     Dim cmd As New OleDbCommand(strTableQ(i), conn) 
     cmd.ExecuteNonQuery() 
    Next 
    'making insert query 
    Dim strInsertQ(ds.Tables.Count - 1) As String 
    For i = 0 To ds.Tables.Count - 1 
     strInsertQ(i) = "Insert Into " & ds.Tables(i).TableName & " Values (" 
     For k As Integer = 0 To ds.Tables(i).Columns.Count - 1 
      strInsertQ(i) &= "@" & ds.Tables(i).Columns(k).ColumnName & " , " 
     Next 
     strInsertQ(i) = strInsertQ(i).Substring(0, strInsertQ(i).Length - 2) 
     strInsertQ(i) &= ")" 
    Next 
    'Now inserting data 
    For i = 0 To ds.Tables.Count - 1 
     For j As Integer = 0 To ds.Tables(i).Rows.Count - 1 
      Dim cmd As New OleDbCommand(strInsertQ(i), conn) 
      For k As Integer = 0 To ds.Tables(i).Columns.Count - 1 
       cmd.Parameters.AddWithValue("@" & ds.Tables(i).Columns(k).ColumnName.ToString(), ds.Tables(i).Rows(j)(k).ToString()) 
      Next 
      cmd.ExecuteNonQuery() 
      cmd.Parameters.Clear() 
     Next 
    Next 

    conn.Close() 
End Sub 
Смежные вопросы