2013-07-30 3 views
0

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

Я получил эту ошибку

'EmployeeMaster$' is not a valid name. Make sure that it does not include invalid characters or punctuation and that is not too long. 

Вот мой код

Response.Clear() 
    Dim dt_excel As New System.Data.DataTable 
    Dim attach As String = "attachment; filename=EmployeeMaster.xls" 

    File.Delete("C:\Users\Julian\Downloads\EmployeeMaster.xls") 

    conn.connect() 
    conn.connectExcel() 
    dt_excel = conn.openReader("Select * from EmployeeMaster") 

    Response.ClearContent() 
    Response.AddHeader("content-disposition", attach) 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 

    Dim tab As String = "" 
    For Each dc As DataColumn In dt_excel.Columns 
     Response.Write(tab + dc.ColumnName) 
     tab = vbTab 
    Next 
    Response.Write(vbLf) 

    conn.openReaderExcel("Create Table [EmployeeMaster$] (EmployeeNo varchar(25))") '<- throw error here 
    For Each dr As DataRow In dt_excel.Rows 
     tab = "" 
     conn.openReaderExcel("Insert into [EmployeeMaster$] (EmployeeNo) values ('" & dr.Item("EmployeeNo") & "')") 
     Response.Write(vbLf) 
    Next 
    Response.End() 

Я продолжаю задаваться вопросом, что случилось с мой код..может ли кто-нибудь предложить мне способ решить эту проблему?

все предложения/помощь будет оценен

С уважением Siekh

ответ

0

Возможно, немного поздно, чтобы ответить, но я думаю, что проблема здесь заключается в использовании [ и ] символов в «таблице» (= лист) имя ... в то время как в большинстве баз данных все в порядке, вы имеете дело с excel здесь ...

0

Попробуйте

Protected Sub btnExportExcel_Click(ByVal sender As Object, 
ByVal e As EventArgs) 
Response.Clear() 
Response.Buffer = True 

Response.AddHeader("content-disposition", 
"attachment;filename=GridViewExport.xls") 
Response.Charset = "" 
Response.ContentType = "application/vnd.ms-excel" 

Dim sw As New StringWriter() 
Dim hw As New HtmlTextWriter(sw) 

GridView1.AllowPaging = False 
GridView1.DataBind() 

'Change the Header Row back to white color 
GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF") 

'Apply style to Individual Cells 
GridView1.HeaderRow.Cells(0).Style.Add("background-color", "green") 
GridView1.HeaderRow.Cells(1).Style.Add("background-color", "green") 
GridView1.HeaderRow.Cells(2).Style.Add("background-color", "green") 
GridView1.HeaderRow.Cells(3).Style.Add("background-color", "green") 

For i As Integer = 0 To GridView1.Rows.Count - 1 
Dim row As GridViewRow = GridView1.Rows(i) 

'Change Color back to white 
row.BackColor = System.Drawing.Color.White 

'Apply text style to each Row 
row.Attributes.Add("class", "textmode") 

'Apply style to Individual Cells of Alternating Row 
If i Mod 2 <> 0 Then 
    row.Cells(0).Style.Add("background-color", "#C2D69B") 
row.Cells(1).Style.Add("background-color", "#C2D69B") 
row.Cells(2).Style.Add("background-color", "#C2D69B") 
row.Cells(3).Style.Add("background-color", "#C2D69B") 
    End If 
Next 
GridView1.RenderControl(hw) 

'style to format numbers to string 
Dim style As String = "<style>.textmode{mso-number-format:\@;}</style>" 
Response.Write(style) 
Response.Output.Write(sw.ToString()) 
Response.Flush() 
Response.End() 
End Sub 

Reference Link

Надеется, что это помогает вам

+0

Спасибо, но я не думаю, что это решит мою проблему. Проблема возникает при создании запроса таблицы hehehe –

+0

Вы пробовали сообщение , что значит «хе-хе». Кто-то дает вам ответ и не воспринимает всерьез. –

+0

то, что я имел в виду, было улыбается –

0

Вы знаете, как использовать наборы данных ?? потому что u может создавать пользовательские запросы там ... нет необходимости для всего кода ... а затем назначить этот запрос на datatable или даже datagrid, а затем экспортировать его в excel. Если и использовать наборы данных, DataTables/DataGridViews и нужен код letme знать

Смежные вопросы