У меня есть этот пример кода в «C:\myPowerPoint\». " для C# Windows Forms .NET
Я добавил из Диспетчера ссылок>COM>Библиотеки типов ссылку на сборку «Библиотека объектов Microsoft Office 16.0» (версия 2.8) или также из NuGet: «Microsoft.Office.Interop.PowerPoint» (версия 15.0.4420.1018) добавлен в мой проект...
Я создал Form1 и кнопку1:
Код: Выделить всё
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
using State = Microsoft.Office.Core.MsoTriState;
using System;
using System.Windows.Forms;
namespace myPowerPoint
{
public partial class Form1 : Form
{
Microsoft.Office.Interop.PowerPoint.Application pptApplication = null;
PowerPoint.Presentation ppt = null;
PowerPoint.Slides slides = null;
PowerPoint.Slide slide = null;
PowerPoint.ColorFormat colorFormat = null;
readonly float u = 72.0f; // Inches
int k = 0; // Loop index
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e)
{
// Create a temporary PowerPoint Application to interact with
pptApplication = new PowerPoint.Application();
ppt = pptApplication.Presentations.Add(State.msoFalse);
ppt.Slides.Application.Caption = "My First PowerPoint";
slides = ppt.Slides; // pptApplication.Presentations.Slides
// First Slide - Blank
slide = slides.AddSlide(1, ppt.SlideMaster.CustomLayouts[PowerPoint.PpSlideLayout.ppLayoutText]);
slide.Layout = PowerPoint.PpSlideLayout.ppLayoutBlank;
// First Shape - FlowchartTerminator
slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeFlowchartTerminator, 6.61f * u, 4.57f * u, 0.77f * u, 0.23f * u);
int i = slide.Shapes.Count;
colorFormat = applyMyTemplate(slide.Shapes[i].Fill.ForeColor);
slide.Shapes[i].TextFrame.TextRange.Font.Name = "Arial Narrow";
slide.Shapes[i].TextFrame.TextRange.Font.Size = 5.0f;
slide.Shapes[i].TextFrame.VerticalAnchor = Office.MsoVerticalAnchor.msoAnchorMiddle;
slide.Shapes[i].TextFrame.HorizontalAnchor = Office.MsoHorizontalAnchor.msoAnchorCenter;
slide.Shapes[i].TextFrame.TextRange.Text = "Box";
slide.Shapes[i].Top = 4.57f * u;
slide.Shapes[i].Width = 0.77f * u;
slide.Shapes[i].Fill.ForeColor = colorFormat; // Here
slide.Shapes[i].Line.ForeColor = colorFormat; // Here2
slide.Shapes[i].Shadow.ForeColor = colorFormat; // Here3
slide.Shapes[i].Height = 0.23f * u;
slide.Shapes[i].Left = 6.61f * u;
// Save and close PowerPoint
string path = @"C:\myPowerPoint\";
string file = "Presentation_" + System.DateTime.Now.ToUniversalTime() + ".ppt";
file = file.Replace(":", "_").Replace("/", "_").Replace(" ", "_");
if (System.IO.File.Exists(path + file)) System.IO.File.Delete(path + file);
ppt.SaveAs(path + file, PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, Office.MsoTriState.msoCTrue);
ppt.Close();
}
private PowerPoint.ColorFormat applyMyTemplate(PowerPoint.ColorFormat colorFormat)
{
// Do some processing... Just an example, ignore it
k++;
if (k == 1) { colorFormat.SchemeColor = PowerPoint.PpColorSchemeIndex.ppAccent1; }
if (k == 2) { colorFormat.SchemeColor = PowerPoint.PpColorSchemeIndex.ppAccent2; }
if (k == 3) { colorFormat.SchemeColor = PowerPoint.PpColorSchemeIndex.ppAccent3; k = 0; }
return colorFormat;
}
}
}
Поэтому мне нужно знать, как создать colorFormat.
Вопрос решен, если «colorFormat» правильно определен в «slide.Shapes.Fill.ForeColor = colorFormat;» поэтому код создаст файл Power Point. В таком представлении фоновый цвет будет отображаться в поле «Box», определенном параметром colorFormat.
Отредактировано: 24 ноября 2024 г. Я заменил BackColor на ForeColor следующим образом:
Код: Выделить всё
slide.Shapes[i].Fill.ForeColor = colorFormat; // Here
Подробнее здесь: https://stackoverflow.com/questions/792 ... olorformat