1)我必须在幻灯片的顶部中心位置显示文字
2)正好在文字下面我必须在表格中显示数据
3)我必须从存储在数据表中的数据中生成相同幻灯片中的折线图。
在这里,我将分享我到目前为止所做的代码。
pptNS.ApplicationClass powerpointApplication = null;
pptNS.Presentation pptPresentation = null;
pptNS.Slide pptSlide = null;
pptNS.ShapeRange shapeRange = null;
pptNS.Shape oShape = null;
xlNS.ApplicationClass excelApplication = null;
xlNS.Workbook excelWorkBook = null;
xlNS.Worksheet targetSheet = null;
xlNS.ChartObjects chartObjects = null;
xlNS.ChartObject existingChartObject = null;
xlNS.Range destRange = null;
string paramPresentationPath = @"D:\test\Chart Slide.pptx";
string paramWorkbookPath = @"D:\test\NPS.xlsx";
object paramMissing = Type.Missing;
try
{
// Create an instance of PowerPoint.
powerpointApplication = new pptNS.ApplicationClass();
// Create an instance Excel.
excelApplication = new xlNS.ApplicationClass();
// Open the Excel workbook containing the worksheet with the chart
// data.
excelWorkBook = excelApplication.Workbooks.Open(paramWorkbookPath,
paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing);
// Get the worksheet that contains the chart.
targetSheet =
(xlNS.Worksheet)(excelWorkBook.Worksheets["Spain"]);
// Get the ChartObjects collection for the sheet.
chartObjects =
(xlNS.ChartObjects)(targetSheet.ChartObjects(paramMissing));
// Create a PowerPoint presentation.
pptPresentation = powerpointApplication.Presentations.Add(
Microsoft.Office.Core.MsoTriState.msoTrue);
// Add a blank slide to the presentation.
pptSlide =
pptPresentation.Slides.Add(1, pptNS.PpSlideLayout.ppLayoutBlank);
// capture range
//var writeRange = targetSheet.Range["A1:B15"];
destRange = targetSheet.get_Range("A1:B15");
System.Array myvalues = (System.Array)destRange.Cells.Value;
List<Tuple<string, string>> cellData = ConvertToStringArray(myvalues);
int iRows = cellData.Count;
int iColumns = 2;
int row = 1;
oShape = pptSlide.Shapes.AddTable(iRows, iColumns, 500, 110, 160, 120);
foreach (Tuple<string, string> item in cellData)
{
string strdate = item.Item1;
string strValue = item.Item2;
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Text = strdate;
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Font.Name = "Verdana";
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Font.Size = 8;
oShape.Table.Cell(row, 1).Shape.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
oShape.Table.Cell(row, 1).Shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Text = (strValue.StartsWith("0") ? "0%" : (strValue + "0%"));
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Font.Name = "Verdana";
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Font.Size = 8;
row++;
}
oShape.Top = 10;
oShape.Left =10;
//copy range
//destRange.Copy();
// Paste the chart into the PowerPoint presentation.
//shapeRange = pptSlide.Shapes.Paste();
//var table = pptSlide.Shapes.AddTable();
// Position the chart on the slide.
//shapeRange.Left = 60;
//shapeRange.Top = 100;
// Get or capture the chart to copy.
//existingChartObject = (xlNS.ChartObject)(chartObjects.Item(1));
// Copy the chart from the Excel worksheet to the clipboard.
//existingChartObject.Copy();
// Paste the chart into the PowerPoint presentation.
//shapeRange = pptSlide.Shapes.Paste();
//Position the chart on the slide.
//shapeRange.Left = 90;
//shapeRange.Top = 100;
// Save the presentation.
pptPresentation.SaveAs(paramPresentationPath,
pptNS.PpSaveAsFileType.ppSaveAsOpenXMLPresentation,
Microsoft.Office.Core.MsoTriState.msoTrue);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Release the PowerPoint slide object.
shapeRange = null;
pptSlide = null;
// Close and release the Presentation object.
if (pptPresentation != null)
{
pptPresentation.Close();
pptPresentation = null;
}
// Quit PowerPoint and release the ApplicationClass object.
if (powerpointApplication != null)
{
powerpointApplication.Quit();
powerpointApplication = null;
}
// Release the Excel objects.
targetSheet = null;
chartObjects = null;
existingChartObject = null;
// Close and release the Excel Workbook object.
if (excelWorkBook != null)
{
excelWorkBook.Close(false, paramMissing, paramMissing);
excelWorkBook = null;
}
// Quit Excel and release the ApplicationClass object.
if (excelApplication != null)
{
excelApplication.Quit();
excelApplication = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
1)问题是我不知道如何以编程方式在幻灯片的顶部中心添加我自己的文本?
2)这样我就添加了一张表来滑动我的数据。这是代码
List<Tuple<string, string>> cellData = ConvertToStringArray(myvalues);
int iRows = cellData.Count;
int iColumns = 2;
int row = 1;
oShape = pptSlide.Shapes.AddTable(iRows, iColumns, 500, 110, 160, 120);
foreach (Tuple<string, string> item in cellData)
{
string strdate = item.Item1;
string strValue = item.Item2;
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Text = strdate;
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Font.Name = "Verdana";
oShape.Table.Cell(row, 1).Shape.TextFrame.TextRange.Font.Size = 8;
oShape.Table.Cell(row, 1).Shape.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
oShape.Table.Cell(row, 1).Shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Text = (strValue.StartsWith("0") ? "0%" : (strValue + "0%"));
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Font.Name = "Verdana";
oShape.Table.Cell(row, 2).Shape.TextFrame.TextRange.Font.Size = 8;
row++;
}
oShape.Top = 10;
oShape.Left =10;
3)现在我必须在我的幻灯片中添加折线图,数据存储在数据表中,但我不知道如何在我的幻灯片中添加折线图。
所以请有人帮我完成编码。
感谢
答案 0 :(得分:0)
您正在寻找为幻灯片添加形状。我看到你在哪里创建形状,但它们从未添加过。以下是有关添加图表和标题的几个问题。 希望它有所帮助,祝你好运。