【问题标题】:Export to excel in c# showing error and not downloading the excel在c#中导出到excel显示错误并且不下载excel
【发布时间】:2023-04-10 09:29:01
【问题描述】:

我的代码,其中从数据库中检索的值集合并将这些值一一存储在数据表中。并将该数据表加载到 Excel 的工作表中

var dataTable = new DataTable();
var sb = new StringBuilder();
var resultvalues=methodtogetvalues() ;


if (resultvalues!= null && resultvalues.Count > 0)
{
    var icount = 1;

    foreach (var values in resultvalues)
    {
        if (icount == 1)
        {
            sb.Append(values.Id);
            icount += 1;
        }

        dataTable.Columns.Add("ID");
        dataTable.Rows.Add(values.Id);
    }
}

var firstName = context.Request.Params["FirstName"];
var lastName = context.Request.Params["LastName"];
var fileName = firstName+lastName+"_ProgramStatusHistory_"+DateTime.Now;

var tempText = Convert.ToString(sb);
var workBook = new ExpertXls.ExcelLib.ExcelWorkbook(ExpertXls.ExcelLib.ExcelWorkbookFormat.Xlsx_2007);
var accessedRangeStyle = workBook.Styles.AddStyle("ΑccessedRangeStyle");
accessedRangeStyle.Font.Size = 10;
accessedRangeStyle.Font.Bold = true;
accessedRangeStyle.Alignment.VerticalAlignment = ExpertXls.ExcelLib.ExcelCellVerticalAlignmentType.Center;
accessedRangeStyle.Alignment.HorizontalAlignment = ExpertXls.ExcelLib.ExcelCellHorizontalAlignmentType.Left;
workBook.Worksheets.AddWorksheet();

var workSheet = workBook.Worksheets[0];
workSheet.LoadDataTable(dataTable, 1, 1, true);
workSheet.AutofitColumns();
workBook.Worksheets.RemoveWorksheet("Sheet2");
workBook.Worksheets.RemoveWorksheet("Sheet3");
workBook.Worksheets.RemoveWorksheet("Sheet4");
workBook.LicenseKey = "gqmworCworOysrWitKyyorGzrLOwrLu7u7s=";

context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("content-disposition", "attachment;filename=" + fileName);

using (var MyMemoryStream = new System.IO.MemoryStream())
{
    workBook.Save(MyMemoryStream);
    MyMemoryStream.WriteTo(context.Response.OutputStream);
    context.Response.Flush();
    context.Response.End();
}

此代码仅显示带有错误消息“错误”的警告框。

我不明白怎么了。谁能用正确的方式重定向我。

【问题讨论】:

  • this code simply showing alert box with the error message "Error". 通过它调试时,出现Error 时执行的代码行是什么?
  • context.Response.End();在此行之后,它会移动到捕获段并显示警告框
  • 建议使用调试器单步调试,看看哪一行出错,找出那个时间点的输入参数或对象状态有什么问题,然后如果你不确定如何解决它发布这个问题。
  • 可能会考虑添加日志记录,以便能够调试 QA 和生产中发生的异常,例如 elmah

标签: c# asp.net excel


【解决方案1】:

我会将这行代码移到 using 语句之外:

context.Response.End();

还显示您的 catch 块。不太可能只给出“错误”消息,我建议在 catch 块中放置一个断点并查看错误对象的内部。

【讨论】:

  • 它只是将异常显示为“无法评估表达式,因为代码已优化或本机框架位于调用堆栈的顶部。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多