2015-06-29 86 views
0

我正在关注EPPlus上的This教程,但是我仍在摸索如何将下载位置设置为登录用户“下载”文件夹?我知道我的位置是这个,但是他们是一种分配它的方式,而不知道登录人员帐户信息?使用EPPlus设置下载位置

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

这里是我的语法:

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

您的问题与EPPlus或您提供的代码有什么关系? –

+1

你不能设置用户下载位置 - 他们必须在他们自己的浏览器设置中执行此操作 - 或者为他们提供一个对话框以保存为..然后他们可以选择。这是一个浏览器的安全事物。 – Darren

+0

@Darren如果您使用HttpContext.Current.Response。它将“下载”文件到你的“下载”文件夹(正是我想要的只是与EPPlus语法不是这种语法)在我目前的语法,它会将文件保存到登录用户C:驱动器。所以你可以硬编码一个下载位置。 – user2676140

回答

1

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

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

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

这将通过将使用浏览器火下载什么使用的默认设置,并让你找到你想要的东西。

+0

他们使用这种方法来设置水平和垂直对齐方式吗? – user2676140

+0

当然(这是一个单独的问题,所以如果你被困在另一个SO上)。看看这个:http://stackoverflow.com/questions/31042901/export-datatable-to-excel-using-epplus-with-additional-data它显示水平对齐。垂直工作方式大致相同。 – Ernie