设置下载位置被EPPlus [英] Set Download Location With EPPlus

查看:240
本文介绍了设置下载位置被EPPlus的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在以下在EPPlus的教程,但我离开抓我的头就如何在下载位置设置为登录用户的下载文件夹?我知道我的位置会是这样,但就是他们给它指定W / O知道登录的人帐户信息的一种方式?


  

C:\\用户\\笔记本\\下载


这是我的语法:

 字符串位置=C:\\\\;
 字符串文件名=EPPlusTest.xlsx;
 使用(ExcelPackage objExcelPackage =新ExcelPackage())
 {
    ExcelWorksheet objWorksheet = objExcelPackage.Workbook.Worksheets.Add(表1);
    。objWorksheet.Cells [A1] LoadFromDataTable(dataTable的,真正的);
    使用(ExcelRange objRange = objWorksheet.Cells [A1:XFD1])
    {
      objRange.Style.Font.Bold = TRUE;
      objRange.Style.Horizo​​ntalAlignment = ExcelHorizo​​ntalAlignment.Center;
      objRange.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
    }
    使用(ExcelRange dataRange = objWorksheet.Cells [A2:XFD20])
    {
      dataRange.Style.Horizo​​ntalAlignment = ExcelHorizo​​ntalAlignment.Left;
      dataRange.Style.VerticalAlignment = ExcelVerticalAlignment.Bottom;
    }
  的FileStream objFileStrm = File.Create(文件名);
  objFileStrm.Close();
  File.WriteAllBytes(位置+文件名,objExcelPackage.GetAsByteArray());
}


解决方案

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

Asp.net是网络,所以你需要做的是这样的:

 使用(ExcelPackage PCK =新ExcelPackage())
{
    VAR WS = pck.Workbook.Worksheets.Add(演示);
    ws.Cells [1,2]。价值=Excel中测试;    变种fileBytes = pck.GetAsByteArray();
    Response.Clear();    Response.AppendHeader(内容长度,fileBytes.Length.ToString());
    Response.AppendHeader(内容处置,
        的String.Format(附件;文件名= \\{0} \\;大小= {1};创建日期= {2};改性最新= {2};读日期= {2}
            temp.xlsx
            ,fileBytes.Length
            ,DateTime.Now.ToString(R))
        );
    Response.ContentType =应用程序/ vnd.openxmlformats-officedocument.s preadsheetml.sheet    Response.BinaryWrite(fileBytes);
    到Response.End();
}

(就拿从这里开始我的文章:<一href=\"http://stackoverflow.com/questions/27320061/open-excelpackage-object-with-excel-application-without-saving-it-on-local-file/27322234#27322234\">Open ExcelPackage对象与Excel应用程序,而不保存在本地文件路径)

这会触发通过浏览器下载将使用使用有哪些默认设置,让您在寻找什么。

I was following This tutorial on EPPlus, but I am left scratching my head on how to set the downloads location to the logged in users "Downloads" folder? I know for me the location would be this, but is their a way to assign it w/o knowing the logged on persons account info?

C:\Users\laptop\Downloads

And here is my syntax:

 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());
}

解决方案

You are mixing apples and oranges. File.WriteAllBytes is part of System.IO and it intended to manipulate files "locally", e.g. the app writes to the local hard drive.

Asp.net is web so you need to do something like this:

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();
}

(Take from my post here: Open ExcelPackage Object with Excel application without saving it on local file path)

This will fire the download through the browser which will use what default settings the use has and get you what your looking for.

这篇关于设置下载位置被EPPlus的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆