2014-10-11 136 views
0

我从数据库中使用以下方法导出excel文件。但我有一个问题,当我输出excel文件比自动下载下载文件夹时,我不希望这样我希望我的excel文件被下载到我的项目文件夹中如何在特定的文件夹中保存Excel文件

var formsection = from fs in db.FormSections 
        join form in Form on fs.FormId equals form.FormId 
        select fs; 
XLWorkbook wb = new XLWorkbook();    
string sheetName = "ARTICLE"; //Give name for export file.    

var Fs = wb.Worksheets.Add("FORMSECTION"); 
Fs.Cell(2, 1).InsertTable(formsection.ToList());// assign list here. 
HttpContext.Response.Clear(); 
HttpContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
HttpContext.Response.AddHeader("content-disposition", String.Format(@"attachment;filename={0}.xlsx", sheetName.Replace(" ", "_"))); 
var filePath = Path.Combine(Server.MapPath("~/Content")); 
using (MemoryStream memoryStream = new MemoryStream()) 
{     
    wb.SaveAs(memoryStream);      
    memoryStream.WriteTo(HttpContext.Response.OutputStream); 
    memoryStream.Close(); 
}    
HttpContext.Response.End(); 
+3

您无法控制它在客户端的下载位置。 – 2014-10-11 08:07:29

+0

@JeremyThompson我只想在下载前加密文件如何做到这一点 – 2014-10-11 08:09:10

回答

0

使用代码

public void ImportXLX() 
     { 

string filePath = string.Format("{0}/{1}", Server.MapPath("~/Content/UploadedFolder"), @"C:\Users\Vipin\Desktop\Sheets\MyXL6.xlsx"); 
        if (System.IO.File.Exists(filePath)) 
         System.IO.File.Delete(filePath); 
        Request.Files["xlsFile"].SaveAs(filePath); 
        Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
} 
1

您需要首先将excel写入服务器。如下

wb.SaveAs(filePath); 
//encrypt the file 
Encrypt(filePath); 
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 
{ 
    using (MemoryStream memoryStream = new MemoryStream()) 
    { 
     byte[] bytes = new byte[file.Length]; 
     file.Read(bytes, 0, (int)file.Length); 
     memoryStream.Write(bytes, 0, (int)file.Length); 
     memoryStream.WriteTo(HttpContext.Response.OutputStream); 
    } 
} 
+0

访问路径'C:\ Users \ Neeraj \ Documents \ Visual Studio 2013 \ Projects \ Planetskool \ Planetskool \ Planetskool \ Content'被拒绝..Getting wb.SaveAs(filepath)中的错误; – 2014-10-11 09:12:57

+0

试试这个: var filePath = Path.Combine(Server.MapPath(“〜/ Content”),string.Format(“{0} .xls”,Guid.NewGuid()。ToString()) – Simer 2014-10-11 09:20:42

+0

使用此文件路径文件下载到chrome下载文件夹:( – 2014-10-11 09:24:19

2

这里是一个DataTable转换为.csv文件,将文件保存到项目的文件夹,我的店在文件夹国内的例子作为我给出的路径。

private void test(DataTable dt1) { 

    string csv = string.Empty; 

    foreach (DataColumn column in dt1.Columns) 
    { 
     //Add the Header row for CSV file. 
     csv += column.ColumnName + ','; 
    } 

    //Add new line. 
    csv += "\r\n"; 

    foreach (DataRow row in dt1.Rows) 
    { 
     foreach (DataColumn column in dt1.Columns) 
     { 
      //Add the Data rows. 
      csv += row[column.ColumnName].ToString().Replace(",", ";") +','; 
     } 

     //Add new line. 
     csv += "\r\n"; 
    } 

    string datetime = Convert.ToString(DateTime.Today.ToString("dd-MM-yyyy")).Trim(); 
    string filepath = "C:\\Users\\Prateek\\Desktop\\MMR New 27-07 -\\Domestic\\"; 
    string filename= @"BILLING_BOOK_NO" + "_4005" + "_"+datetime+".CSV"; 
    string combinepath = filepath + filename;   
    System.IO.File.WriteAllText(combinepath,csv); 
}` 
相关问题