我正在使用 Open XML 创建 Excel。我想向 Excel 添加背景图像。 不要告诉我将图像添加到 Excel 并与 OpenXML Productivity Tool 进行比较。 请让我知道执行此操作的提取方法?
我已经深入研究使用 OpenXML 将背景图像应用到 Excel,并且我正在共享代码。
class Program
{
static void Main(string[] args)
{
//pathe of the Excel file to add background image
string document = @"Book1.xlsx";
// Open the document for editing.
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(document, true))
{
// Get existing sheets from workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>();
// Loop through all sheets and add image as background
foreach (var sheet in sheets.Elements<Sheet>())
{
WorksheetPart worksheetPart = (WorksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);
CreateWorksheetPart(worksheetPart);
}
}
}
public static void CreateWorksheetPart(WorksheetPart part)
{
ImagePart imagePart1 = part.ImageParts.FirstOrDefault();
if (imagePart1 == null)
imagePart1 = part.AddNewPart<ImagePart>("image/jpeg", "rId1");
string str = part.GetIdOfPart(imagePart1);
GenerateImagePart1Content(imagePart1);
GeneratePartContent(part, str);
}
private static void GenerateImagePart1Content(ImagePart imagePart1)
{
using (var stream = new FileStream("WatermarkDoc.png", FileMode.Open))
{
imagePart1.FeedData(stream);
}
}
private static void GeneratePartContent(WorksheetPart part, string idPart)
{
Worksheet worksheet1 = part.Worksheet;
Picture picture1 = new Picture() { Id = idPart };
worksheet1.Append(picture1);
}
}
使用以下工具查找 openXML 中的更多类。 https://www.microsoft.com/en-us/download/details.aspx?id=30425?
我遇到了同样的问题,我发现这篇文章,代码确实有效,但是,它会永远重复,有没有办法只显示一次图像? 谢谢