c# 与ajax 结合使用 实现excel 导出

baidu_29849097 2015-07-15 05:37:44
js 代码
$.ajax({
type: "Post",
url: "/RMBase/SysReport/Housingresources_List.aspx/ExportToExcel",
contentType:"application/json;charset=utf-8",
success: function (msg) {
alert("成功导出数据");
},
error: function (err)
{
alert("导出过程中发生错误");
}
});
c#代码
[WebMethod]
public static string ExportToExcel()
{
if (dtReport != null)
{
Microsoft.Office.Interop.Excel._Application xlApp = null;
try
{
xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
}
catch (Exception ex)
{
throw ex;
}

if(xlApp != null)
{
try
{
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
object oMissing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Worksheet xlSheet = null;
xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
xlSheet.Name = "table";

int colCount = dtReport.Columns.Count;
int rowCount = dtReport.Rows.Count;
//列名
xlSheet.Cells[2, 1] = "街道";
xlSheet.Cells[2, 2] = "小区";
xlSheet.Cells[2, 3] = "楼栋";
xlSheet.Cells[2, 4] = "室号";
xlSheet.Cells[2, 5] = "所属工程";
xlSheet.Cells[2, 6] = "面积";
xlSheet.Cells[2, 7] = "对应车库";
xlSheet.Cells[2, 8] = "阁楼面积";
xlSheet.Cells[2, 9] = "拆迁户姓名";
xlSheet.Cells[2, 10] = "身份证";
xlSheet.Cells[2, 11] = "联系方式";

for (int i = 1; i < 12;i++ )
{
xlSheet.get_Range(xlSheet.Cells[2, i], xlSheet.Cells[2, i]).Font.Bold = true;
xlSheet.get_Range(xlSheet.Cells[2, i], xlSheet.Cells[2, i]).Font.Size = "10";
}

for (int i = 0; i < rowCount; i++)
{

for (int j = 1; j < colCount; j++)
{
xlSheet.Cells[i+3, j] = dtReport.Rows[i][j-1].ToString();
}
}
xlSheet.Cells.EntireColumn.AutoFit();

xlApp.DisplayAlerts = false;
xlApp.Visible = true;
}
catch (Exception ex)
{
throw ex;
}
finally
{

}
}
}

return "";
}
...全文
417 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatdoyousay 2015-07-17
  • 打赏
  • 举报
回复
引用 2 楼 q72363850 的回复:
导出成Excel和ajax有关系么?直接用C#搞定不就完了?
同问,C#的方法不是直接导出么,ajax调用完成,保存本地
i疾风 2015-07-17
  • 打赏
  • 举报
回复
我也搞过这个东西。 给几点想法: 1.ajax发送请求后,调用的函数都是在后台执行的,如果你是excel导出的时候失败,那么请调试后台代码。 2.你前端发送的ajax请求给后台,后台成功生成了excel,那么很好,但是很遗憾,这个excel还在后台,即sever端,你需要调用HTTpcontext.response的方法(并且要指定某个属性为附件)来将这个后台生成好的excel传到前端供用户下载。 3.asp.net的话上述方法很简单,如果页面是纯种html写的话,建议如果只是需要把页面的一个table导出为excel供用户下载的话,建议直接javascript生成excel供用户下载就好了。
disenaaa 2015-07-15
  • 打赏
  • 举报
回复
导出成Excel和ajax有关系么?直接用C#搞定不就完了?
wc_ling 2015-07-15
  • 打赏
  • 举报
回复
你要干嘛?

110,567

社区成员

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

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

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