把DataGrid中的数据导出到Excel中

mingzaili 2005-03-11 12:52:16
http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=8A4CBF47-B888-4832-3389-ED3A3A3C8AAB
DataGrid输出到Excel并进行格式化处理

在孟子的网页上面可以正常的把DataGrid里面的数据导出到Excel里面,可是一到我的程序里,却有点问题了,会把那个提交按纽也导到了Excel里面。
这是为什么呀?还请高手帮帮忙呀!
不胜感激!
...全文
717 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
MyXQ 2005-03-22
  • 打赏
  • 举报
回复
mark
Hunter 2005-03-19
  • 打赏
  • 举报
回复
我用過的,引用孟子大哥的例子,可以
Private Sub WritetoExcel()
Dim FileName As String
Dim FileExtName As String = ".xls"
Dim strMonth As String, strDay As String, k As Integer
'Dim xlsheet

strMonth = CStr(Month(Now()))
strDay = CStr(Day(Now()))
For k = 1 To 2 - Len(strMonth)
strMonth = "0" & strMonth
Next
For k = 1 To 2 - Len(strDay)
strDay = "0" & strDay
Next
FileName = "Ensure"
FileName = FileName & Year(Now()) & strMonth & strDay & FileExtName
'Response.Write(FileName)
'Response.End()

Dim xlsheet As New SpreadsheetClass
'xlsheet = CreateObject("OWC11.Spreadsheet")
Dim i As Integer = 0
Dim j As Integer = 0
'Response.End()
' 輸出標題
Dim oItem As DataGridColumn
For Each oItem In DataGrid1.Columns
xlsheet.ActiveSheet.Cells(1, i + 1) = oItem.HeaderText
'xlsheet.ActiveSheet.Range(xlsheet.ActiveSheet.Cells(1, 1), xlsheet.ActiveSheet.Cells(1, i + 1)).Font.Bold = True
'設置格式
xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, i + 1)).Font.Bold = True
xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, i + 1)).Font.Color = "red"
i = i + 1
Next

Dim numbercols As Integer = DataGrid1.Items.Item(0).Cells.Count
' 輸出欄位內容
For j = 0 To DataGrid1.Items.Count - 1
For i = 0 To numbercols - 1
xlsheet.Range(xlsheet.Cells(2, 2), xlsheet.Cells(j + 2, i + 1)).Font.Color = "blue"
'xlsheet.Range("A2:B14").WrapText = True
'xlsheet.Range(xlsheet.Cells(2, 1), xlsheet.Cells(j + 2, i + 1)).AutoFitColumns()
xlsheet.ActiveSheet.Cells(j + 2, i + 1) = DataGrid1.Items.Item(j).Cells(i).Text.Replace(" ", " ")
Next
Next
Try
'xlsheet.ActiveSheet.Export(Server.MapPath(".") + "\Images\" + Me.xlfile.Text, OWC.SheetExportActionEnum.ssExportActionNone)
'xlsheet.ActiveSheet.Export(Server.MapPath(".") + "\Images\" + FileName, OWC.SheetExportActionEnum.ssExportActionNone)
'xlsheet.ActiveSheet.Export(Server.MapPath(".") + "\Images\" + FileName, OWC.SheetExportActionEnum.ssExportActionNone)

Dim ssConstants

ssConstants = xlsheet.Constants

'xlsheet.Export(Server.MapPath(".") + "\Images\" + FileName, ssConstants.ssExportActionNone, ssConstants.ssExportXMLSpreadsheet)
'xlsheet.Export(Server.MapPath(".") + "\Images\" + FileName)
xlsheet.Export(Server.MapPath(".") + "\Images\" + FileName, ssConstants.ssExportActionNone, ssConstants.ssExportXMLSpreadsheet)
subFileName = Server.MapPath(".") + "\Images\" + FileName

Catch e As System.Runtime.InteropServices.COMException
Response.Write("錯誤:" + e.Message)
End Try
End Sub
ckcrzlckcrzl 2005-03-12
  • 打赏
  • 举报
回复
up
chenqyyangjn 2005-03-12
  • 打赏
  • 举报
回复
将控件按钮在输出前先Visible一下不就OK了吗?

你想输出DATAGRID所有的数据都行
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
trpagelist.Visible = False
trpagehead.Visible = False
Response.Clear()
Response.Buffer = True
Response.Charset = "utf-8"
dgFsQueryList.AllowPaging = False
getFsQueryList()



Response.AppendHeader("Content-Disposition", "attachment;filename=boco.xls")
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")

'Response.ContentType指定文件类型 可以为application/ms-excel || application/ms-word || application/ms-txt || application/ms-html || 或其他浏览器可直接支持文档

Response.ContentType = "application/ms-excel"
Me.EnableViewState = False

'二、定义一个输入流
Dim temp As String = ""
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
'System.IO.StringWriter(oStringWriter = New System.IO.StringWriter)
'System.Web.UI.HtmlTextWriter(oHtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter))

'三、将目标数据绑定到输入流输出
Me.RenderControl(oHtmlTextWriter)

'Me 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
temp = oStringWriter.ToString()
temp = temp.Replace("<LINK", "<meta")
Response.Write(temp)

trpagelist.Visible = True
trpagehead.Visible = True

dgFsQueryList.AllowPaging = True
dgFsQueryList.PageSize = 20
getFsQueryList()
Response.End()


End Sub
End Class
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
我结帖啦!对自己得分不满意的可以给我发短信呀!





最后还是要真心的说一声谢谢:
谢谢LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)和blackhero(黑侠客)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!







mingzaili 2005-03-11
  • 打赏
  • 举报
回复
我明白啦,又是服务器端和客户端的问题!
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
晕!谢谢LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)和blackhero(黑侠客)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
blackhero 2005-03-11
  • 打赏
  • 举报
回复

.:;*....:;;*..%&*.
.,*****=-;?&=*..,+%:*&?=,.
.:;;;;;;;~+;;;+;;*.:@&,.:;*...:*
..*=--;&%$$####@$;:+=***+=,&$-..%-.
..:;;$###&+@&@&++++++@&@#=:,:;*:+*.%-
.*+&~::?~$@~=:&:*,,--&?~::@@$%$;?:*&-%-
.:*:@#?*~&-,,$=,,,~++*~;&+++*,~+@#&@+$-. ..
..,&#@:*?~*,,&~*,,?~*-+~=,,-??%$$###+$;,..**+*
...:;@#?-,~+-,,~+-,,,;-,;-,,~;+@&;+@?++@##&;;;;*.
.&?=*%@=,,$=,,,%=,,,,,,,,,,&::&~-*&~,*+@@##;-+%:..
.:;,.:;-,,~+-,,,;-,,,,,,,,,,,,;-,,~-,,%&++@##+*:@-.
.*;=..,?=,,,?=,,,,,,,,,,,,,,,,,,,,,,?=,?~$=%~%+$$=*?*.
.%= .%=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,%=%=$=~@&@#=:+*
,. ,?=,,,,,,,*-*,,,,,,,,,,,,,,,,,,,,,-*$=%~,%=%:+*,.
.%=,,,,,,~;&+-,,,,,,,,,,,,,~;*,,,,,,,%=%#=~-~+*.
.*?=,,,&??~=*,,,,,,,,,,,,,,,-=&?:*,,,,-*-~?-&-%-.
.%=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;+-,,,,~-%#=%=%-
.%=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-*,,,,-*$@:%=%-
.%=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;-$#=%=.
..,?=,,,,,-????%=,,,,,,,,,,,,-----*,,,,,,,,,,?#@:..
..:;;@=,,,,,,~;;;;+*,,,,,,,,,,,,;++++;;*,,,,,,,,,%#&*..
,+;~=$=,,,,,-&@#+$@$:*,,,,,,,,--?$$$::=&=,,,,,,,?$@@%?=.
.%=;+;@=,,,,,$&@#?++++*,,,,,,,,;+++@#&@&*,,,,,,,,;-,,,,$=.
%=,,:%=,,,,&$~:~=&??=,,,,,,,,,,,&$;=&$#@:*,,,,,,,-&?:*-?-.
.:;*,%=,,,,,,~;&++-,,,,~;;;*,,,,,,;@&;*~++-,,,,,,,%=,;-,%=
.&$:%=,,,,**=~=*,,,*??~===&?:,,,,,-=?%??=,,,,,,,,?~,,,?:.
.:@=,,--::=-*,,,,~&*,,,,,,,;+*,,,,,----*,,,,,,,,,%=,~+,
*?=,,*=-*,,,,,,?~*-?$=,,?$:=%-,,,,**=:=:-,,,,,&?~*?:.
.%=,,,,,,,,,,~-,;+-;++-,,;++++-,,,,,,,,=-:*,,,,~-,,%=
.%=,,,,,,,,,&$:,,-*,,,,,,,,,-*,,,?$:*,,,,*,,,,,$:-&=.
.%=,,,,,,,,,,,;+*,,,,,,,,,,,,,,,,%?+-,,,,,,,,,,%&;,
.%=,,,,,,,,,,,,$$$$$:----------%%#=,,,,,,,,,,,,$=
.:;-,,,,,,,,,,,;%%%%@@@@$@@@@$@%@&-,,,,,,,,,,,,$=
&=,,,,,,,,,,,,?$%%%%%%%%%%%%%$$=,,,,,,,,,,,,-?-
.~*,,,,,,,,,,,;%@@&$$&%%%%$$&-,,,,,,,,,,,,~;,
,+:*,,,,,,,,,,::=&$@%$$$$~=*,,,,,,,,,,,*-?-
.:;;;*,,,,,,,;++;;*,,~;;-,,,,,,,,,,,,~+;,
**+?$:------===???~==*---------+??:. ..
.... .%&+&&+@#&;*,,,,~;;@##?+&&&++;;;*.. .:;;*.
.&??=-... ..*$@%:-,==:~?$%?%+=====*..,*&;~~~&?=,.. .&~==?-.
.%=,;++;*. ...:;&&@:;++;;;+&@=,~++;, .:;&@:==+&-,+;;*.. .%=,,%=.
.&:*,,-=&=..,*-*+??~$~=%=..====*=%-,*.==*&%%~=-%=*=$:,,*==??=*..*&~,,-?-.
.....%&*,,,,;+;@?++=,**$~-%:, ,%-:&?+, ..,.,,$:,=++-,.,.*,*+@&;;+-,~++*. ......
.**+???$@%-,,,,-$~&=..,,=%~*%:. ,$-?+;%- .?:**=$:, ..=&$#~*,,,$=-&=--+???=.
.:++-,,~-,,~*,,,,$=,;;,.,$~-,%:. ,$- ;+, ,$:,-=$:, .$-,$=,,,,$=,,%&+-,,,$=.
.&:----$=,,?:*,,,$=,,?:.,$~-,?:, ,?:.,*. .?~**=?~?=. ?~*,$=,,-&@=,,-?:--&?=.
.:;;;;@&*,,$=,,~@=,,,$-,$;-,,%:. ,$-:??+, ;&-,==$=++, %=,,$=,,;-$=,,~+++++;*.
. .,*+$#=,,?:*,-?:*,,%-,$;-,,?~,. .-%*%+:$- .*%=,,==$:,%=.. $=,?~*,,,*%=,,%:*,,-=?-.
.:;;++-,$&-,,$=,,,;+*,$-,$;-,,,;+*.,$- ~&?&* .;+-,,,-=$=**$:*,,$=,%=,,,,%=,,~+++;;*,$=
.&~==**-?$@:*,-?=,,,%=,$:&@~-,,,,=&:-$:..--*--&?~*,,,,==%=**-?:==$=,%:*,,-%=,,%~-===&$:.
.:;;;;&+-,,~+*,;-,,~@&;;;,%:-,,,,,,;++++++++++-,,,,,,,==$:*,,*$&;;;;+;;*,;-,,~@&;;;;;+,
,*%~*,--+?@@:*,-&=***. .%~-,,,,,,,,,,=--=*,,,,,,,,,,*=:?=..?:. ,*. ,+:---?:$=.,***.
:;;;+;,.%?+-~;, .%:*,,,,,,,,,,,,,,,,,,,,,,,,,,-=++, $-. :;;@=,%&*.
,**. .%=,-?- .%=,,,,,,,,,,,,,,,,,,,,,,,,,,,,-=:?%$:, ,?=-%$-.
%=,$= :+-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--%~=$-. .:;;;+,
,+?=. .%:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,%~=$-. ,**.
.%=,,,*;=--*,,,,,,,,,,--*,,,,,,,,,,%;=++*.
.%=,,,,%?%:::~===::::~%$=,,,,,,,,,,=?:=%=,
.%=,,,;+-,;+++&+&+++++@#:,,,,,,,,,,,$;==$-.
.%:,,,%:,,,,,,=::=-&?%@~*,,,,,,,,,,,-===?:,
.%=,,*%=,,,,,,,+&&&===%:,,,,,,,,,,,,,====$-
.&:*,,%:*,,,,,,*****-=$=,,,,,,,,,,,,,-===$-
%:,,%~=*,,,,,,,,,-==$=,,,,,-;-,,,,,-===%-
.%=,,-?:==**,,,*====:?=,,,*:&:*,,,,,,-==$-
.%=,,,;&:===---====++-,,,-++-,,,,,,,,===$-
.%=,,,,-&?:::::~&??:*,*=:&:*,,,,,,,,-===$-
.%:,,,,,,,;+++++-,,,,-=++-,,,,,,,,,,%~=+;*
.&~*,,,,,,,+%:****,**==:%=,,,,,,,,,,-?~=$-
%=,,,,,,,,,;:+===-====$=,,,,,,,,,,,%;==$-
.%=,,,,,,,,,,=~&;~===~%~*,,,,,,,,,,,%~=%:.
.%:,,,**,,,,,===+?&&&@#:,,,,,,,,,,,,%;=$-.
.%=,,&???~-==&%~==:$:-%=-=*,,,--*,,,%~=$-
.:+-,,*===+?&&&~====$=.%=;&&+++@?:-,,%~=$-
.%=,,,,&??&???;=====$=,%:*-;+~+;:-,,,%;=%-.
.:+-,,,,,,,,,,,-=====++-%=,,;++++-,,,,%~=@=.
.%=,,*,,,,,,,,,,-=====$=%:,,,,,,,,,,,,-?::%-.
.%=,,,,**,***,**======$++-,,,,,,,,,,,,,%;=$-.
.%=,,-&&&?&&?&&?:=====$;*,,,,,,,,,,,,,,%~=%=,
.%=,,;-~++++++++&:====$=,,,,,,,,,,,,,,,%~==@-
.%=-&%%?&&@%?&??%%+===$=,,,,,---=*,,,,,%;==%=
.%&?+;;;?%#$%+;&?&%%&&@?++++++++++;+=*,%~==@-
.%?+;**~;;$&;;;&??$?&$#%?$@@#$%%%;~:+&~%;~%#-.
.:%&;;==~;;;;;;;&%$+;;;@%#$+;?+;;;?%&++&&&&&#-.
.%@%&++++++++++&?@&;**?&++++;;;;;;;;+&?%$%$$$@-
.%$%%%$%$$%$$$$%%#&;=-~;;;;;;;;;;;;;;+?&&???&$=.
,+%&&??????????+$@&&&+++++++++++&??????@@@@@#-
.:;;;;;;;;;;;;@#$%%%$%$$$$$$$$$$%%%%%####$@=
,&%%&???&&&&&&+&?&&?%%%=*****.
.:;;;?%%%%%%%+;;,
,*******.
blackhero 2005-03-11
  • 打赏
  • 举报
回复
server
client
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
谢谢LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) !!!

可是我这里真的是要点两下才可以打开! 奇怪啦!
LoveCherry 2005-03-11
  • 打赏
  • 举报
回复
他的代码没有问题
我测试过了
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
万分的感谢LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)和blackhero(黑侠客)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
zhangA 2005-03-11
  • 打赏
  • 举报
回复
mark
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
to blackhero(黑侠客):
您给的代码:
private void Page_Load(object sender, System.EventArgs e)
{
DataGrid1.DataSource=CreateDataSource();
DataGrid1.DataBind();
// 在此处放置用户代码以初始化页面
}

ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("身份证号码", typeof(string)));
dt.Columns.Add(new DataColumn("图书单价",typeof(decimal)));
dt.Columns.Add(new DataColumn("购买数量",typeof(Int32)));
dt.Columns.Add(new DataColumn("总价格",typeof(decimal)));
for (int i = 0; i < 30; i++)
{
dr = dt.NewRow();
dr[0] = "123456789123456789";
dr[1] = 100 * i /3.0;
dr[2] = i + 5;
dr[3] = (decimal)dr[1] * (Int32)dr[2];
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}

private void Button1_Click(object sender, System.EventArgs e)
{
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();

}
还有一点点小问题,就是弹出对话框,询问打开还是保存时,当点“打开”的时候,点一下打不开,要点两下才可以打开。
要怎样就可以做到点一下就可以打开呢?

mingzaili 2005-03-11
  • 打赏
  • 举报
回复
肯定也要谢谢blackhero(黑侠客)您啦!
我是潘东东 2005-03-11
  • 打赏
  • 举报
回复
那要是WINDOWS程序该怎么办呢
blackhero 2005-03-11
  • 打赏
  • 举报
回复
那我呢
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
好棒呀!
再次感谢LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) !!!

谢谢!!!!!!!!!!!!!!
mingzaili 2005-03-11
  • 打赏
  • 举报
回复
今天这么多带星的光临,真的感到好高兴呀!!!
blackhero 2005-03-11
  • 打赏
  • 举报
回复
LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) ( ) 信誉:100

你是我偶像
加载更多回复(29)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧