【发布时间】:2020-02-13 02:44:41
【问题描述】:
我正在使用以下代码使用 EPplus 将背景图像添加到 Excel。该文档在 Polaris Office 中打开正常,但使用 Excel 时出现以下错误
我们发现“filename.xlsx”中的某些内容存在问题。你想尽量恢复吗
代码
foreach (var file in Filelist)
{
// Load workbook
//var fileInfo = new FileInfo(@file);
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//ExcelPackage pkg = new ExcelPackage(fs);
using (var package = new ExcelPackage(fs))
{
// Itterate through workbook sheets
foreach (var sheet in package.Workbook.Worksheets)
{
sheet.BackgroundImage.Image = bmp;
sheet.Protection.IsProtected = false;
}
package.SaveAs(new FileInfo(Path.GetFileNameWithoutExtension(file)+".xlsx"));
}
fs.Close();
}
我检查了相关的 SO 问题,有人提到问题可能是由于保存多次。我确保单个文件只命中循环一次。
更新: 位图生成代码
using (Graphics g = Graphics.FromImage(bmp))
{
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
SizeF textSize = g.MeasureString("Sample", new Font(DefaultFont.FontFamily, 80));
g.DrawString("Sample", new Font("Tahoma", 80), Brushes.Red, -(textSize.Width / 2), -(textSize.Height / 2));
}
【问题讨论】:
-
也许你应该把你的
FileStream也放在using声明中,但是我怀疑这是个问题 -
@MichaelRandall 试过了,没有解决问题。
-
当我使用“e2”的 NumberFormat 时出现此错误。我需要用科学计数法格式化一些数字。
-
@KenWhite 我不在任何地方使用数字格式...该评论来自其他用户...
-
通常帮助我解决这些问题的方法是在 Excel 本身中完成,然后比较 zip 包中的两个 xml 文件 - 这通常会为我指明解决方案
标签: c# .net excel ms-office epplus