0

我正在使用以下代码:

var assembly =          Assembly.GetExecutingAssembly();
        Stream streamToTemplete=assembly.GetManifestResourceStream("DailyAuction.xltx");
        Stream streamToOutput = assembly.GetManifestResourceStream("dailyAuctionEmail.xls");


        //using (ExcelPackage excelPackage = new ExcelPackage(newFile, templateFile))

        using(streamToTemplete)
        using (streamToOutput)
        {

            using (ExcelPackage excelPackage = new ExcelPackage(streamToOutput, streamToTemplete))
            {

                ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets["Daily Auction"];
                int startRow = 4;
                int row = startRow;
                foreach (DailyEmail dailyEmail in listDailyEmail)                                                                                                                           //iterate through all the rows in the list
                {
                    worksheet.Cells[row, 1].Value = dailyEmail.As_At.ToString("dd-MMM-yy HH:mm");
                    worksheet.Cells[row, 2].Value = dailyEmail.Auction_Date.ToString("dd-MMM-yy");

                }
                excelPackage.Save();
            }
        }

        var attachment = new Attachment(streamToOutput, new ContentType("application/vnd.ms-excel"));

但是,我收到一条错误消息,提示 streamToTemplate 和 streamToOutput 为空。似乎是什么问题?另外,其余的代码可以工作吗?

4

1 回答 1

1

检查两个 Excel 文件的属性。构建操作应该是“嵌入式资源”。

此外,您提供给 GetManifestResource 流的字符串看起来太简单了。字符串应该是:

<defaultNamespace>.<folderName>.<fileName> MSDN 文章

这个答案建议调用 GetManifestResourceNames,然后使用调试器查看资源名称。当你在寻找自己的方式时,这似乎是一个很好的方式。

于 2013-10-11T15:30:04.890 回答