急求:根据checkbox的选择行数来导出excel

enasp 2009-03-04 05:14:47
代码如下:不知哪有问题,请多多指教!!



protected void Button2_Click(object sender, EventArgs e)
{

for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox ck = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
if (ck.Checked)
{

string id = GridView1.Rows[i].Cells[1].Text.Trim();

string title = GridView1.Rows[i].Cells[2].Text.Trim();

Export("application/ms-excel", "excel.xls");

}
}
}


private void Export(string FileType, string FileName)
{

Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);

GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();





}

...全文
296 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
_NET2004 2009-03-07
  • 打赏
  • 举报
回复
建立一个datatable,将选中行复制到datatable,然后导出excel的时候,数据源就是新建的datatable
enasp 2009-03-07
  • 打赏
  • 举报
回复
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS1501: “Export”方法没有采用“3”个参数的重载

源错误:



行 128: }
行 129: s.Append("</table>");
行 130: Export("application/ms-excel", "excel.xls", s.ToString());
行 131:
行 132: }

CutBug 2009-03-07
  • 打赏
  • 举报
回复

Export("application/ms-excel", "excel.xls",s.ToString());
enasp 2009-03-07
  • 打赏
  • 举报
回复
五楼的方法提示:Export”方法没有采用“3”个参数的重载
pt1314917 2009-03-06
  • 打赏
  • 举报
回复

//修改下:

<input type="button" onclick="AutomateExcel()" value="导出" style="width: 41px" class="button">


<SCRIPT LANGUAGE="JavaScript">
function AutomateExcel()
{
try {
var oXL = new ActiveXObject("Excel.Application");
}catch(e){
alert('您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”!');
return '';
}


var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var table = document.getElementById("表格名称");
var hang = table.rows.length;
if(hang>0)
{
var lie = table.rows(0).cells.length;
for (i=0;i<hang;i++)
{
//假如你的checkbox在第1列
var cb = table.rows[i].cells[0].getElementsTagName("input");
if(cb!=null && cb.type="checkbox" && cb.checked)
{
for (j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).NumberFormatLocal="@";
oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;
}
}
}
}
oXL.Visible = true;
oXL.UserControl = true;
}


pt1314917 2009-03-06
  • 打赏
  • 举报
回复
晕,还以为第一遍没有发成功。
pt1314917 2009-03-06
  • 打赏
  • 举报
回复


<input type="button" onclick="AutomateExcel()" value="导出" style="width: 41px" class="button">


<SCRIPT LANGUAGE="JavaScript">
function AutomateExcel()
{
try {
var oXL = new ActiveXObject("Excel.Application");
}catch(e){
alert('您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”!');
return '';
}


var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var table = document.getElementById("表格名称");
var hang = table.rows.length;
if(hang>0)
{
var lie = table.rows(0).cells.length;
for (i=0;i<hang;i++)
{
//假如你的checkbox在第1列
var cb = table.rows[i].cells[0].getElementsTagName("checkbox");
if(cb!=null && cb.checked)
{
for (j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).NumberFormatLocal="@";
oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;
}
}
}
}
oXL.Visible = true;
oXL.UserControl = true;
}

</SCRIPT>
pt1314917 2009-03-06
  • 打赏
  • 举报
回复

5楼的方法可行,还有一种可以通过js来实现导出:
<SCRIPT LANGUAGE="JavaScript">
function AutomateExcel()
{
try {
var oXL = new ActiveXObject("Excel.Application");
}catch(e){
alert('您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”!');
return '';
}


var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var table = document.getElementById("Excel");
var hang = table.rows.length;
if(hang>0)
{
var lie = table.rows(0).cells.length;
for (i=0;i<hang;i++)
{
//这里判断checkbox是否选中,假如checkbox在第1列
var cb = table.rows[i].cells[0].getElementsTagName("checkbox");
if(cb!=null && cb.checked)
{
for (j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).NumberFormatLocal="@";
oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;
}
}
}
}
oXL.Visible = true;
oXL.UserControl = true;
}

</SCRIPT>

//页面调用js
<input type="button" onclick="AutomateExcel()" value="导出" style="width: 41px" class="button">
enasp 2009-03-06
  • 打赏
  • 举报
回复
Export”方法没有采用“3”个参数的重载
feifeiyiwen 2009-03-05
  • 打赏
  • 举报
回复
up
CutBug 2009-03-05
  • 打赏
  • 举报
回复
protected void Button2_Click(object sender, EventArgs e)
{
StringBuilder s = new StringBuilder();
s.AppendLine("<table style='width:800px' border=1>");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox ck = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
if (ck.Checked)
{
//GridView1.Columns
s.AppendLine("<tr>");
for (int j = 0; j < GridView1.Columns.Count; j++)
{
s.AppendFormat("<td>{0}</td>", GridView1.Rows[i].Cells[j].Text);
}
s.AppendLine("</tr>");

}
}
s.Append("</table>");
Export("application/ms-excel", "excel.xls",s);

}

private void Export(string FileType, string FileName,string s)
{

Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
Response.Write(s);
Response.End();

}
enasp 2009-03-05
  • 打赏
  • 举报
回复
2楼,你的方法不行!

3楼,不知道怎么拼写,能否举个例?
enasp 2009-03-04
  • 打赏
  • 举报
回复
对啊,只导出 选种的行成excel!
CutBug 2009-03-04
  • 打赏
  • 举报
回复
这个你要拼字符串了
hecong875 2009-03-04
  • 打赏
  • 举报
回复

protected void Button2_Click(object sender, EventArgs e)
{

for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox ck = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
if (ck.Checked)
{

string id = GridView1.Rows[i].Cells[1].Text.Trim();

string title = GridView1.Rows[i].Cells[2].Text.Trim();

Export("application/ms-excel", "excel.xls",title);

}
}
}


private void Export(string FileType, string FileName,string title)
{

Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
Response.Write(title);
Response.End();





}
没试! 你自己试试! 还有把你的情况说清楚点..........
是只导出 选种的行吗? 如果是的话!那你直接把选种的行的数据传递到Export 以流的方式保存就好了.


62,267

社区成员

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

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

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

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