如何将datagrid里的数据导出到excel中
各位高手请指点:
我在论坛上搜索过,也发现了一些方法,可是都用不了,生成的excel里什么也没有,datagrid的数据也是绑定了的,好迷惑啊,请各位指点迷津!
问题点数:50、回复次数:11Top
1 楼Gingko_Zhang(Gingko)回复于 2006-06-01 16:46:55 得分 0
'*********************************************************************************************轉EXCEL
Public Function table_to_excel_com(ByVal DS As System.Data.DataSet) As Integer
Dim lab1 As Label
Dim myOFD As System.Windows.Forms.SaveFileDialog = New SaveFileDialog
myOFD.Title = "create file"
myOFD.Filter = "excel file|*.xls"
If myOFD.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
If (File.Exists(myOFD.FileName)) Then
Dim r As Integer
r = MessageBox.Show("已存在此文件,確定要復蓋?", "系統提示!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
If r = 0 Then
Exit Function
Else
GoTo lab1
End If
End If
Else
lab1: Dim myWriter As System.IO.StreamWriter
myWriter = File.CreateText(myOFD.FileName)
myWriter.Close()
End If
Dim oMissing As Object = System.Reflection.Missing.Value
Dim xlApp As Excel.ApplicationClass = New Excel.ApplicationClass
Try
' open excel2000
Dim xlWorkbook As Excel.Workbook = xlApp.Workbooks.Open(myOFD.FileName, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing)
Dim xlWorksheet As Excel.Worksheet
' for all the table
For i As Integer = 0 To DS.Tables.Count - 1
'create a new sheet
xlWorksheet = xlWorkbook.Worksheets.Add(oMissing, oMissing, 1, oMissing)
' tablename name the sheet
xlWorksheet.Name = DS.Tables(i).TableName
'get the table values save to the stringbuffer
Dim stringBuffer As String = ""
For j As Integer = 0 To DS.Tables(i).Rows.Count
For k As Integer = 0 To DS.Tables(i).Columns.Count - 1
stringBuffer = stringBuffer + DS.Tables(i).Rows(j)(k).ToString
If k < DS.Tables(i).Columns.Count - 1 Then
stringBuffer += "\t"
End If
Next k
stringBuffer += "\n"
Next j
' using the clipboard
System.Windows.Forms.Clipboard.SetDataObject("")
' set the stringbuffer to the clipboard
System.Windows.Forms.Clipboard.SetDataObject(stringBuffer)
xlWorksheet.Range(1, 1).Select()
xlWorksheet.Paste(oMissing, oMissing)
System.Windows.Forms.Clipboard.SetDataObject("")
Next i
' save and close excel
xlWorkbook.Close(Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook)
xlWorkbook = Nothing
Return 1
Catch ex As Exception
MessageBox.Show(ex.Message)
Return 0
Finally
'set free
xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
xlApp = Nothing
GC.Collect()
End Try
End Function
End ClassTop
2 楼hanchi8008(寒池)回复于 2006-06-01 18:06:43 得分 0
dingTop
3 楼waywander(第三只眼)回复于 2006-06-01 18:18:24 得分 0
在写入excel的激发事件用下面的代码
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
EnableViewState = false;//关闭 ViewState
System.IO.StringWriter tw = new System.IO.StringWriter();//将信息写入字符串
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);//在WEB窗体页上写出一系列连续的HTML特定字符和文本。
DataGrid1.RenderControl(hw);//获取control的HTML,将DATAGRID中的内容输出HtmlTextWriter对象中
Response.Write(tw.ToString());// 把HTML写回浏览器
Response.End();Top
4 楼softdeveloper(笨蛋天才)回复于 2006-06-01 18:23:34 得分 0
相比datatable, datagrid生成excel的最简单:
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
Top
5 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-06-01 18:25:21 得分 0
http://www.aspxboy.com/private/showthread.asp?threadid=206Top
6 楼dgrwang(探索者)回复于 2006-06-01 18:31:43 得分 0
markTop
7 楼lilyatkm(lily)回复于 2006-06-06 13:45:58 得分 0
softdeveloper(笨蛋天才) ,我试了你的方法,可是导出来的excel文件里什么也没有。这是什么原因呢?Top
8 楼slily0210()回复于 2006-06-06 13:58:21 得分 0
我用了以上方法,为什么没有弹出下载的对话框阿~~~求助中Top
9 楼sxddr(sxddr)回复于 2006-06-06 13:58:28 得分 0
回楼上,你看看你DataGrid对象名是不是自己的,softdeveloper(笨蛋天才) 得方法应该是对的Top
10 楼lilyatkm(lily)回复于 2006-06-06 14:03:12 得分 0
DataGrid对象名是自己的了,导出得到的excel里只有一句话:线程正被终止。其余的什么也没有,怎么会这样呢?Top
11 楼slily0210()回复于 2006-06-06 14:45:09 得分 0
this.DataGrid1把这个改成自己的对吧,我用的是我自己的阿,但是就是没反应,这个会是什么原因阿?Top




