使用 ExcelPackage 从 Excel 模板读取并写入 Excel
本文关键字:Excel 读取 ExcelPackage 使用 | 更新日期: 2023-09-27 18:34:50
我正在使用以下代码:
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为空。似乎有什么问题?另外,其余代码会起作用吗?
检查两个 Excel 文件的属性。生成操作应为"嵌入资源"。
此外,您提供给 GetManifestResource 流的字符串看起来太简单了。字符串应为:
<defaultNamespace>.<folderName>.<fileName>
MSDN 文章
此答案建议调用 GetManifestResourceNames,然后使用调试器查看资源名称。当你找到自己的路时,这似乎是一个很好的方法。