如何进行.xlsx文件下载

时间:2013-07-22 16:34:44

标签: c#-2.0 xlsx

以下用于创建.xls文件并下载文件。 我想将其下载到.xlsx文件中。如果我只是将扩展名更改为“.xlsx”,则报告将直接在浏览器中打开。我希望它以.xlsx扩展名打开。请帮助我。

以下是您的代码参考,

//setting the application path to a variable
   strPath = Server.MapPath("ExcelFiles");
   //Creating a file name 
   strExportPath = "Card" + intRnd.ToString() + intRnd1.ToString() + ".xls";
hidFilePath.Value = "ExcelFiles/" + strExportPath;
//Creating the full path with the filename
strExcelPath = strPath + "\\" + strExportPath;
Session["AK_SC_CRD_EXCEL_PATH"] = strExcelPath;

StreamWriter objStreamWriter = new StreamWriter(strExcelPath, true);
//Write the XL Contents to a stream writer.
objStreamWriter.WriteLine(strXLContents);
objStreamWriter.Close();
objStreamWriter = null;

感谢。

3 个答案:

答案 0 :(得分:3)

您可能需要为响应添加一个用于xslx的MIMETYPE。

  

.XLSX,应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

与下面类似;

  

Response.ContentType =   “应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet”;

答案 1 :(得分:0)

添加以下代码将强制您下载文件,而不是在浏览器中打开。

Response.AddHeader("content-disposition", "attachment;filename=yourfilename.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
/*Add your code here to write file to response stream*/
Response.End();

答案 2 :(得分:0)

使用以下代码下载Excel: -

 HttpContext context = HttpContext.Current;
        FileStream fs = null;
        BinaryReader br = null;
        byte[] data = null;
        try
        {
            if (File.Exists(filePath))
            {
                FileInfo file = new FileInfo(filePath);

                fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                br = new BinaryReader(fs, System.Text.Encoding.Default);
                data = new byte[Convert.ToInt32(fs.Length)];
                br.Read(data, 0, data.Length);
                context.Response.Clear();                  
                context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                context.Response.AddHeader("content-disposition", "attachment; filename=" + file.FullName);                            
                context.Response.AddHeader("Content-Length", file.Length.ToString());
                context.Response.BinaryWrite(data);
                context.Response.Flush();                                   
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }