【问题标题】:Set Download Location With EPPlus使用 EPPlus 设置下载位置
【发布时间】:2015-06-30 04:18:51
【问题描述】:

我一直在关注 EPPlus 上的 This 教程,但我对如何将下载位置设置为登录用户的“下载”文件夹感到头疼?我知道我的位置会是这个,但是他们是在不知道登录人员帐户信息的情况下分配它的一种方式吗?

C:\Users\laptop\Downloads

这是我的语法:

 string location = "C:\\";
 string filename = "EPPlusTest.xlsx";
 using (ExcelPackage objExcelPackage = new ExcelPackage())
 {
    ExcelWorksheet objWorksheet = objExcelPackage.Workbook.Worksheets.Add("Sheet 1");
    objWorksheet.Cells["A1"].LoadFromDataTable(dataTable, true);
    using (ExcelRange objRange = objWorksheet.Cells["A1:XFD1"])
    {
      objRange.Style.Font.Bold = true;
      objRange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
      objRange.Style.VerticalAlignment = ExcelVerticalAlignment.Center;                
    }
    using (ExcelRange dataRange = objWorksheet.Cells["A2:XFD20"])
    {
      dataRange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
      dataRange.Style.VerticalAlignment = ExcelVerticalAlignment.Bottom;
    }
  FileStream objFileStrm = File.Create(filename);
  objFileStrm.Close();
  File.WriteAllBytes(location + filename, objExcelPackage.GetAsByteArray());
}

【问题讨论】:

  • 您的问题与 EPPlus 或您提供的代码有什么关系?
  • 你不能设置用户的下载位置——他们必须在他们自己的浏览器设置中这样做——或者为他们提供一个对话框来另存为......然后他们可以选择。这是浏览器的安全问题。
  • @Darren 如果您使用 HttpContext.Current.Response。它会将文件“下载”到您的“下载”文件夹(正是我想要的只是使用 EPPlus 语法而不是那种语法)在我当前的语法中,它将文件保存到登录的用户 C:驱动器。所以你可以硬编码一个下载位置。
  • @CoryNelson - 语法使用 EPPlus - 我在问是否可以添加任何语法来设置用户下载文件夹的保存位置。在我当前的代码中,它保存到登录的用户 C:\\ 驱动器。
  • EPPlus 不下载任何东西。发布您如何下载文件(ASP.NET?),而不是您的 EPPlus 代码。

标签: c# asp.net epplus


【解决方案1】:

您正在混合苹果和橙子。 File.WriteAllBytes 是 System.IO 的一部分,它旨在“本地”操作文件,例如应用程序写入本地硬盘。

Asp.net 是 web,所以你需要做这样的事情:

using (ExcelPackage pck = new ExcelPackage())
{
    var ws = pck.Workbook.Worksheets.Add("Demo");
    ws.Cells[1, 2].Value = "Excel Test";

    var fileBytes = pck.GetAsByteArray();
    Response.Clear();

    Response.AppendHeader("Content-Length", fileBytes.Length.ToString());
    Response.AppendHeader("Content-Disposition",
        String.Format("attachment; filename=\"{0}\"; size={1}; creation-date={2}; modification-date={2}; read-date={2}"
            , "temp.xlsx"
            , fileBytes.Length
            , DateTime.Now.ToString("R"))
        );
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

    Response.BinaryWrite(fileBytes);
    Response.End();
}

(摘自我的帖子:Open ExcelPackage Object with Excel application without saving it on local file path)

这将通过浏览器触发下载,该浏览器将使用用户的默认设置并为您提供所需的内容。

【讨论】:

  • 他们是使用这种方法设置水平和垂直对齐的方法吗?
  • 当然(这是一个单独的问题,所以如果您遇到问题,请在 SO 上发布另一个问题)。看看这个:stackoverflow.com/questions/31042901/…,它显示了水平对齐。垂直工作方式大致相同。
猜你喜欢
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2012-12-22
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2012-04-09
相关资源
最近更新 更多