Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何下载memoryStream文件_C#_Asp.net - Fatal编程技术网

C# 如何下载memoryStream文件

C# 如何下载memoryStream文件,c#,asp.net,C#,Asp.net,我是asp.net的初学者,我使用创建pdf文件。我在课堂上写这段代码 namespace PdfReportSamples.CustomPriceNumber { public class CustomPriceNumberPdfReport { public IPdfReportData CreatePdfReport() { using (var memoryStream = new MemoryStream())

我是asp.net的初学者,我使用创建pdf文件。我在课堂上写这段代码

namespace PdfReportSamples.CustomPriceNumber
{
    public class CustomPriceNumberPdfReport
    {
        public IPdfReportData CreatePdfReport()
        {
            using (var memoryStream = new MemoryStream())
            {
                var ii= new PdfReport().DocumentPreferences(doc =>
                {
                    doc.RunDirection(PdfRunDirection.LeftToRight);
                    doc.Orientation(PageOrientation.Portrait);
                    doc.PageSize(PdfPageSize.A4);
                    doc.DocumentMetadata(new DocumentMetadata { Author = "Vahid", Application = "PdfRpt", Keywords = "Test", Subject = "Test Rpt", Title = "Test" });
                })
           .DefaultFonts(fonts =>
           {
               fonts.Path(Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\arial.ttf",
                                 Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf");
           })
           .PagesFooter(footer =>
           {
               footer.DefaultFooter(DateTime.Now.ToString("MM/dd/yyyy"));
           })
           .PagesHeader(header =>
           {
               header.DefaultHeader(defaultHeader =>
               {
                   defaultHeader.RunDirection(PdfRunDirection.LeftToRight);

               });
           })
           .MainTableTemplate(template =>
           {
               template.BasicTemplate(BasicTemplate.SilverTemplate);
           })
           .MainTablePreferences(table =>
           {
               table.ColumnsWidthsType(TableColumnWidthType.Relative);
           })
           .MainTableDataSource(dataSource =>
           {
               var listOfRows = new List<Transaction>();
               for (int i = 0; i < 200; i++)
               {
                   listOfRows.Add(new Transaction
                   {
                       Product = "Item " + i,
                       Description = "Desc. " + i,
                       SalePrice = 1000 * i
                   });
               }
               dataSource.StronglyTypedList(listOfRows);
           })

           .MainTableColumns(columns =>
           {
               columns.AddColumn(column =>
               {
                   column.PropertyName("rowNo");
                   column.IsRowNumber(true);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(0);
                   column.Width(1);
                   column.HeaderCell("#");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.Product);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(1);
                   column.Width(2);
                   column.HeaderCell("Product");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.Description);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(2);
                   column.Width(3);
                   column.HeaderCell("Description");
               });

               columns.AddColumn(column =>
               {
                   column.PropertyName<Transaction>(x => x.SalePrice);
                   column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                   column.IsVisible(true);
                   column.Order(3);
                   column.Width(3);
                   column.HeaderCell("Sale Price");
                   column.ColumnItemsTemplate(template =>
                   {
                       template.CustomTemplate(new CustomPriceCell());
                   });
                   column.AggregateFunction(aggregateFunction =>
                   {
                       aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum);
                       aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj));
                   });
               });

           })
           .MainTableEvents(events =>
           {
               events.DataSourceIsEmpty(message: "There is no data available to display.");
           })
           .Export(export =>
           {
               export.ToExcel();
           })
           .Generate(data => data.AsPdfStream(memoryStream));


       }


        }
    }
}
namespace PdfReportSamples.CustomPriceNumber
{
公共类CustomPriceNumberPDReport
{
公共IPdfReportData CreatePdfReport()
{
使用(var memoryStream=new memoryStream())
{
var ii=新的PdfReport().DocumentPreferences(文档=>
{
文档运行方向(PdfRunDirection.LeftToRight);
文档方向(页面方向.纵向);
文件页面大小(PdfPageSize.A4);
doc.DocumentMetadata(新DocumentMetadata{Author=“Vahid”,Application=“PdfRpt”,Keywords=“Test”,Subject=“Test Rpt”,Title=“Test”});
})
.DefaultFonts(字体=>
{
fonts.Path(Environment.GetEnvironmentVariable(“SystemRoot”)+“\\fonts\\arial.ttf”,
Environment.GetEnvironmentVariable(“SystemRoot”)+“\\fonts\\verdana.ttf”);
})
.PagesFooter(页脚=>
{
footer.DefaultFooter(DateTime.Now.ToString(“MM/dd/yyyy”);
})
.PagesHeader(标题=>
{
header.DefaultHeader(DefaultHeader=>
{
defaultHeader.RunDirection(PdfRunDirection.LeftToRight);
});
})
.MainTableTemplate(模板=>
{
模板.BasicTemplate(BasicTemplate.SilverTemplate);
})
.MainTablePreferences(表=>
{
table.ColumnSwidthType(TableColumnWidthType.Relative);
})
.MainTableDataSource(数据源=>
{
var listOfRows=新列表();
对于(int i=0;i<200;i++)
{
添加(新事务)
{
Product=“Item”+i,
Description=“Desc.”+i,
售价=1000*i
});
}
数据源.StronglyTypedList(行列表);
})
.MainTableColumns(列=>
{
columns.AddColumn(column=>
{
第.PropertyName列(“行号”);
列。isLownNumber(true);
柱.单元对齐(水平对齐.中心);
列.IsVisible(true);
列。顺序(0);
列宽(1);
列。标题单元格(“#”);
});
columns.AddColumn(column=>
{
column.PropertyName(x=>x.Product);
柱.单元对齐(水平对齐.中心);
列.IsVisible(true);
第1列:顺序(1);
列宽(2);
列。HeaderCell(“产品”);
});
columns.AddColumn(column=>
{
column.PropertyName(x=>x.Description);
柱.单元对齐(水平对齐.中心);
列.IsVisible(true);
第2列:顺序(2);
列宽(3);
标题栏(“说明”);
});
columns.AddColumn(column=>
{
column.PropertyName(x=>x.SalePrice);
柱.单元对齐(水平对齐.中心);
列.IsVisible(true);
第3栏:顺序(3);
列宽(3);
列。总称(“销售价格”);
column.ColumnItemsTemplate(模板=>
{
CustomTemplate(新的CustomPriceCell());
});
column.AggregateFunction(AggregateFunction=>
{
aggregateFunction.NumericAggregateFunction(aggregateFunction.Sum);
aggregateFunction.DisplayFormatFormula(obj=>obj==null?string.Empty:string.Format(“{0:n0}”,obj));
});
});
})
.MainTableEvents(事件=>
{
datasourceismpty(消息:“没有可显示的数据”);
})
.导出(导出=>
{
export.ToExcel();
})
.Generate(data=>data.AsPdfStream(memoryStream));
}
}
}
}

我想当用户点击按钮时,发送这个文件(到memoryStream)下载。但是我不知道怎么写这个代码。请帮帮我。感谢专家

不清楚您所说的“将此文件(发送到memoryStream)下载”是什么意思。您正在创建一个
MemoryStream
,但随后完全忽略它,因为您将立即从该方法返回。看起来创建报告的代码不应该序列化它——它应该将报告返回给调用代码,然后调用代码可以将报告保存到流中。不幸的是,我们没有足够的上下文来提供更多帮助。@Jon Skeet:首先,我在MemoryStream中创建pdf文件,例如,我将按钮放入表单,我希望用户单击按钮时该文件下载。好的,正如我所建议的,您需要将“创建并返回报告”与“写入内存流”分开。现在你把它们放在一起的方式意味着内存流是在不想使用它的代码中创建的。你所说的“发送这个文件(到memoryStream)以供下载”是什么意思还不清楚。您正在创建一个
MemoryStream
,但随后完全忽略它,因为您将立即从该方法返回。看起来创建报告的代码不应该序列化它-它应该将报告返回给cal
byte[] bytes = memoryStream.GetBuffer();
Response.Buffer = true;
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=report.pdf");
Response.BinaryWrite(bytes);
Response.Flush();