1

我正在创建 excel 并向其中填充值。我正在使用 EPPlus。我可以使用文件流保存并打开它。但我想打开它而不保存。我认为我们可以以某种方式使用 memorystream 直接生成 excel。请指导。

try
        {
            MemoryStream newFile = new MemoryStream();
            using (ExcelPackage package = new ExcelPackage(newFile))
            {


                // Add Data Collection worksheet
                ExcelWorksheet dataWorksheet = package.Workbook.Worksheets.Add("Sheet1");


                dataWorksheet.Cells[1, 1].Value = " My Text";
                dataWorksheet.Cells[1, 1].Style.Font.Size = 14;
                dataWorksheet.Cells[3, 1].Value = BALGlobalVariables.cocName;
                dataWorksheet.Cells[5, 1].Value = "IR From Date :";
                dataWorksheet.Cells[6, 1].Value = "IR To Date : ";
                dataWorksheet.Cells[5, 6].Value = "From Date :";
                dataWorksheet.Cells[6, 6].Value = "To Date : ";

                dataWorksheet.Cells[5, 2].Value = fromDate;
                dataWorksheet.Cells[6, 2].Value = toDate;
                dataWorksheet.Cells[5, 7].Value = invFromDate;
                dataWorksheet.Cells[6, 7].Value = invFromDate;




                // Template specific excel generation goes in here
                FillPurchaseExcelData(ref dataWorksheet, masterTable, subTable);

                // save package
                package.Save();

            }

            byte[] fileContent = newFile.ToArray();
#if DEBUG
            string tempName = "MTemp.xlsx";
            string tempFileName = System.IO.Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) + @"\" + tempName;

            //Write the stream data of workbook to the root directory
            using (FileStream file = new FileStream(tempFileName, FileMode.Create))
            {
                file.Write(fileContent, 0, fileContent.Length);

            }
            System.Diagnostics.Process.Start(tempFileName);
4

1 回答 1

1

您可以生成 excel 文件并选择不保存,但 Excel 无法打开未保存在磁盘上的文件(它在磁盘上时变为“文件”),所以简而言之 - 您必须保存文档才能在 Excel 中打开它。

如果您担心将数据存储在硬盘驱动器上,作为替代方案,您可以在您信任的介质上创建一个数据源,然后创建一个 xslx 来指示 Excel 在打开工作表时使用该数据源(而不是创建一个文件预填充数据)。但这是另一回事了……

于 2013-09-27T12:52:04.093 回答