如何在OpenXml中使用“内容处置附件”

问题描述

我有一个ASP.NET MVC 4站点,该站点使用OPEN XML SDK创建Excel文件。我的控制器方法生成OPEN XML Excel文档并正在下载。

但是用户应该在浏览器中看到Excel文件

我知道

response.addheader("content-disposition","attachment;  filename=" + fileName + "");  

对此负责。但是我不知道如何在openXnl方法中实现这一点。我在这里没有使用http响应。或如何使用?请帮助我

这是我的Excel生成方法,我尝试实现AddHeader "content-disposition",但无济于事:

public static void GenerateExcelOpenXML(string FolderPath,DataSet tableSet)
{
    WorkbookPart wBookPart = null;
    var datetime = DateTime.Now.ToString().Replace("/","_").Replace(":","_");
    string FilePath = FolderPath + "Report_" + datetime + ".xlsx";

    using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Create(FilePath,SpreadsheetDocumentType.Workbook))
    {
        wBookPart = spreadsheetDoc.AddWorkbookPart();
        wBookPart.Workbook = new Workbook();
        uint sheetId = 1;
        spreadsheetDoc.WorkbookPart.Workbook.Sheets = new Sheets();
        Sheets sheets = spreadsheetDoc.WorkbookPart.Workbook.GetFirstChild<Sheets>();

        WorkbookStylesPart wbsp = wBookPart.AddNewPart<WorkbookStylesPart>();

        wbsp.Stylesheet = CreateStylesheet();
        wbsp.Stylesheet.Save();

        foreach (DataTable table in tableSet.Tables)
        {
            WorksheetPart wSheetPart = wBookPart.AddNewPart<WorksheetPart>();
            Sheet sheet = new Sheet() { Id = spreadsheetDoc.WorkbookPart.GetIdOfPart(wSheetPart),SheetId = sheetId,Name = table.TableName };
            sheets.Append(sheet);

            SheetData sheetData = new SheetData();
            wSheetPart.Worksheet = new Worksheet();

            Row headerRow = new Row();

            Columns columns = new Columns();
            int ColumnNumber = 1;

            foreach (DataColumn column in table.Columns)
            {
                Cell cell = new Cell();
                cell.DataType = CellValues.String;
                cell.CellValue = new CellValue(column.ColumnName);
                cell.StyleIndex = 2;
                headerRow.AppendChild(cell);

                Column column1 = new Column();
                column1.Width = 30;
                column1.Min = Convert.ToUInt32(ColumnNumber);
                column1.Max = Convert.ToUInt32(ColumnNumber);
                column1.CustomWidth = true;

                columns.AppendChild(column1);
                ColumnNumber = ColumnNumber + 1;
            }

            wSheetPart.Worksheet.AppendChild(columns);

            sheetData.AppendChild(headerRow);

            foreach (DaTarow dr in table.Rows)
            {
                Row row = new Row();

                foreach (DataColumn column in table.Columns)
                {
                    Cell cell = new Cell();
                    cell.DataType = CellValues.String;
                    cell.CellValue = new CellValue(dr[column].ToString());
                    cell.StyleIndex = 1;
                    row.AppendChild(cell);
                }

                sheetData.AppendChild(row);
            }

            sheetId++;

            wSheetPart.Worksheet.AppendChild(sheetData);

            // sheetData.AddHeader("content-disposition","attachment;  filename=" + fileName + "");       
            // how can I implement here?
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)