excel 导出全部数据

cyh811122 2010-01-12 08:35:35

Response.Clear();
Response.Buffer = false;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=test.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ContentType = "application/ms-excel"; this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

我用输出流的方式导出excel数据,dataview设置为分页方式,但以上代码只能导出当前面上的数据,请问怎么调整可以导出全部的数据?
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞驴 2010-01-12
  • 打赏
  • 举报
回复
是啊,那个导出只导出本页的,你要重新查询绑定上Datatable才行啊,

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("表", System.Text.Encoding.UTF8) + ".xls");
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataGrid dg1 = new DataGrid();
dg1.DataSource = DTSpart;
dg1.DataBind();
dg1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
Hamsic 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tchjl2007 的回复:]
C# codeMicrosoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
app.Visible=true;
Workbook wBook= (Workbook)app.Workbooks.Add(true);
Worksheet wSheet= wBook.Worksheets[1]as Worksheet;for (int k=0; k<= colName((System.Data.DataTable)this.dataGridView1.DataSource).Length-1; k++)
{
wSheet.Cells[1, k+1]= colName((System.Data.DataTable)this.dataGridView1.DataSource)[k].ToString();
}if (((System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count>0)
{int row, col;
row= ((System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count;
col= ((System.Data.DataTable)this.dataGridView1.DataSource).Columns.Count;for (int i=0; i<= row-1; i++)
{for (int j=0; j<= col-1; j++)
{
wSheet.Cells[i+2, j+1]= ((System.Data.DataTable)this.dataGridView1.DataSource).Rows[i][j].ToString();
}
}
}
wSheet.Columns.AutoFit();
wSheet.Columns.Font.Name="Arial";
wSheet.Columns.Font.Size=10;
wSheet.Columns.HorizontalAlignment= Excel.XlHAlign.xlHAlignCenter;

直接这样导出把。。
[/Quote]

for (int k = 0; k <= colName((System.Data.DataTable)this.dataGridView1.DataSource).Length - 1; k++)
{
wSheet.Cells[1, k + 1] = colName((System.Data.DataTable)this.dataGridView1.DataSource)[k].ToString();
}
这句话可以54 我只不过是制定EXCEL的表头,这个方法如下:

        private string[] colName(System.Data.DataTable dt) //获取DataGridView列名
{
string colName = "";
for (int i = 0; i <= dt.Columns.Count - 1; i++)
{
colName = dt.Columns[i].ColumnName.ToString() + "|" + colName;
}
colName = colName.Substring(0, colName.LastIndexOf("|"));
string[] sColName = colName.Split(new char[] { '|' });
return sColName ;
}
Hamsic 2010-01-12
  • 打赏
  • 举报
回复
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Workbook wBook = (Workbook)app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;

for (int k = 0; k <= colName((System.Data.DataTable)this.dataGridView1.DataSource).Length - 1; k++)
{
wSheet.Cells[1, k + 1] = colName((System.Data.DataTable)this.dataGridView1.DataSource)[k].ToString();
}
if (((System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count > 0)
{
int row, col;
row = ((System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count;
col = ((System.Data.DataTable)this.dataGridView1.DataSource).Columns.Count;



for (int i = 0; i <= row - 1; i++)
{
for (int j = 0; j <= col - 1; j++)
{
wSheet.Cells[i + 2, j + 1] = ((System.Data.DataTable)this.dataGridView1.DataSource).Rows[i][j].ToString();
}
}
}
wSheet.Columns.AutoFit();
wSheet.Columns.Font.Name = "Arial";
wSheet.Columns.Font.Size = 10;
wSheet.Columns.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;


直接这样导出把。。
mxc1225 2010-01-12
  • 打赏
  • 举报
回复
那就建议你不要导dataview上的数据了!!
直接使用dataview的数据源~!样式什么的可以想其他的办法啊!?
ysz89757 2010-01-12
  • 打赏
  • 举报
回复
不会,顶一下

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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