在本文中,我们将带你了解powerpoint中怎么做三线表教程在这篇文章中,我们将为您详细介绍powerpoint中怎么做三线表教程的方方面面,并解答怎么在ppt中做三线表常见的疑惑,同时我们还将给您
在本文中,我们将带你了解powerpoint中怎么做三线表教程在这篇文章中,我们将为您详细介绍powerpoint中怎么做三线表教程的方方面面,并解答怎么在ppt中做三线表常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的C#添加:在PowerPoint中更改形状的选择、Java使用APACHE POI在PowerPoint中创建图表、Java在PowerPoint中添加上标和下标、PowerPoint Interop:如何检测用户何时关闭PowerPoint而又不保存更改?。
本文目录一览:- powerpoint中怎么做三线表教程(怎么在ppt中做三线表)
- C#添加:在PowerPoint中更改形状的选择
- Java使用APACHE POI在PowerPoint中创建图表
- Java在PowerPoint中添加上标和下标
- PowerPoint Interop:如何检测用户何时关闭PowerPoint而又不保存更改?
powerpoint中怎么做三线表教程(怎么在ppt中做三线表)
powerpoint中怎么做三线表教程 ppt制作三线表格的方法图解三线表看起来简单明了,又突破了普通表格死板,拘束的原则,很受很多朋友的欢迎,但是还有部分朋友不知道怎样在PPT中制作三线表,如何在ppt做三线表?下面给大家分享ppt做三线表的方法吧。
ppt制作三线表的方法
1. 新建一个PPT文档,单击菜单栏“插入”——表格——选择行列。
2.把光标移动到表格左边框外面出现十字箭头时双击,在菜单栏“设计”中选择一种底纹。
3.在菜单栏“设计”中在“边框”下拉选项中选择“无边框”。
4.在菜单栏“设计”中在“边框”下拉选项中选择“上框线”。
5. 在菜单栏“设计”中在“边框”下拉选项中选择“下框线”。
6. 选择第一行表格,在“设计”中在“边框”下拉选项中选择“下框线”。
7. 现在就可以看到三线表了,如图所示。
C#添加:在PowerPoint中更改形状的选择
如何解决C#添加:在PowerPoint中更改形状的选择?
当前,我正在编写一些较小的代码来更改PowerPoint中形状的位置。
var refshape = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange[1];
foreach (Shape shp1 in Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange)
shp1.Left = refshape.Left;
该函数本身就像一个吊饰一样工作,将选择中的所有形状对准refshape。 但是,在功能完成之后,感觉形状的选择就搞砸了。
这些形状似乎仍处于选中状态,但是我无法对其执行任何操作(例如,使用Strg + G对其进行分组)。要执行此操作,我必须Strg +单击页面上的某个位置(选择保持不变),然后将它们分组。
有人知道吗,为什么会这样,我可以添加什么样的代码,所以形状在函数后表现正常?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Java使用APACHE POI在PowerPoint中创建图表
我们如何使用apache poi在Java中的ppt中创建图表。我们使用哪种POI API。下面是我用来创建文本框的代码
XSLFSlide slide = pptx.createSlide();
XSLFTextShape textShape = slide.createTextBox();
textShape.setText(data);
幻灯片对象不包含任何用于创建图表的api。
有什么解决办法吗?
提前致谢
Java在PowerPoint中添加上标和下标
前言
当我们在演示文稿中添加商标、版权或其他符号时,我们可能希望该符号出现在某个文本的上方或下方。在Microsoft PowerPoint中,我们可以通过对符号应用上标或下标格式来实现这种效果。在这篇文章中,我将演示如何在Java中使用Spire.Presentation for Java以编程的方式实现这一任务。
程序环境
安装Spire.Presentation for Java
首先,你需要在你的Java程序中添加Spire.Presentation.jar文件作为一个依赖项。该JAR文件可以从这个链接下载。如果你使用Maven,则可以通过在pom.xml文件中添加以下代码轻松导入该JAR文件。
代码示例
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.cn/repository/maven-public /</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation</artifactId>
<version>7.9.1</version>
</dependency>
</dependencies>
注意:请保持上面代码中的版本号与下载链接中的一致,以体验新功能或避免BUG。
添加上标和下标
Spire.Presentation for Java提供了PortionEx.getFormat().setScriptDistance(float value)方法来应用上标或下标格式到文本。该值可以被设置为正值或负值。正值越大,上标将在你的文本上方越高的位置出现。负值越小,下标就会在你的文本下方越低的地方出现。
步骤
- 创建一个Presentation实例,并使用Presentation.loadFromFile()方法加载一个PowerPoint文档。
- 使用Presentation.getSlides().get()方法获得想要的幻灯片。
- 使用ISlide.getShapes().appendShape()方法在幻灯片上添加一个形状,并设置形状的填充类型和线条颜色。
- 使用IAutoShape.getTextFrame()方法访问形状的文本框,然后使用ITextFrameProperties.getParagraphs().clear()方法清除文本框中的默认段落。
- 使用ParagraphEx类创建一个段落,并使用ParagraphEx.setText()方法向该段落添加正常文本。
- 使用PortionEx类创建一个带有文本的部分,然后使用PortionEx.getFormat().setScriptDistance(float value)方法将上标或下标格式化到文本中。
- 为正常文本和上标或下标文本设置文本颜色、字体和字体大小。
- 使用ITextFrameProperties.getParagraphs().append()方法将段落附加到形状的文本框中。
- 使用Presentation.saveToFile()方法保存结果文档。
代码示例
import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
import java.awt.*;
public class AddSuperscriptAndSubscript {
public static void main(String []args) throws Exception {
//加载一个PowerPoint文档
Presentation presentation = new Presentation();
presentation.loadFromFile("template.pptx");
//得到第一张幻灯片
ISlide slide = presentation.getSlides().get(0);
//在幻灯片上添加一个形状
IAutoShape shape = slide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle(150, 100, 200, 50));
shape.getFill().setFillType(FillFormatType.NONE);
shape.getShapeStyle().getLineColor().setColor(Color.white);
//访问形状的文本框
ITextFrameProperties textFrame = shape.getTextFrame();
//清除文本框中的默认段落
textFrame.getParagraphs().clear();
//创建一个段落并添加正常文本
ParagraphEx para = new ParagraphEx();
para.setText("s=πr");
//创建带有上标文本的部分
PortionEx tr = new PortionEx("2");
tr.getFormat().setScriptDistance(40);
//添加这个部分到段落中
para.getTextRanges().append(tr);
para.getTextRanges().append(new PortionEx("\n"));
//为正常文本设置文本颜色,字体,字体大小
tr = para.getTextRanges().get(0);
tr.getFill().setFillType(FillFormatType.SOLID);
tr.getFill().getSolidColor().setColor(new Color(128,0,128));
tr.setFontHeight(20);
tr.setLatinFont(new TextFont("Arial"));
//为上标文本设置文本颜色以及字体
tr = para.getTextRanges().get(1);
tr.getFill().setFillType(FillFormatType.SOLID);
tr.getFill().getSolidColor().setColor(Color.BLUE);
tr.setLatinFont(new TextFont("Arial"));
//添加段落到形状的文本框
textFrame.getParagraphs().append(para);
//使用正常文本创建另一个段落
para = new ParagraphEx();
para.setText("h");
//创建带有下标文本的部分
tr = new PortionEx("1");
tr.getFormat().setScriptDistance(-25);
//添加这个部分到段落中
para.getTextRanges().append(tr);
//为正常文本设置文本颜色,字体,字体大小
tr = para.getTextRanges().get(0);
tr.getFill().setFillType(FillFormatType.SOLID);
tr.getFill().getSolidColor().setColor(new Color(128,0,128));
tr.setFontHeight(20);
tr.setLatinFont(new TextFont("Arial"));
//为下标文本设置文本颜色以及字体
tr = para.getTextRanges().get(1);
tr.getFill().setFillType(FillFormatType.SOLID);
tr.getFill().getSolidColor().setColor(Color.BLUE);
tr.setLatinFont(new TextFont("Arial"));
//添加这个段落到形状的文本框
textFrame.getParagraphs().append(para);
//保存结果文档
presentation.saveToFile("AddSuperscriptAndSubscript.pptx", FileFormat.PPTX_2013);
}
}
效果图
注:该JAR包分为免费版和商业版,免费版没有水印或评估信息,但是有篇幅和大小限制,商业版有水印或评估信息,没有篇幅限制,想要去除这些评估信息,需要应用license,可以点击这里获取30天免费license。
---THE END---
PowerPoint Interop:如何检测用户何时关闭PowerPoint而又不保存更改?
如何解决PowerPoint Interop:如何检测用户何时关闭PowerPoint而又不保存更改??
我有一个WPF应用程序,可将PowerPoint文件存储在sql Server数据库中。该应用程序具有一个编辑按钮,可以打开给定的PowerPoint文件进行编辑。由于PowerPoint是基于文件的应用程序,因此我必须使用临时文件来加载和保存PowerPoint。
为此目的我编写的帮助程序类具有绑定到编辑按钮的IsEnabled
属性的属性;我们在编辑过程中禁用该按钮。编辑过程中,有一个ManualResetEvent
会在此帮助程序类中挂起Edit
方法。我钩上Presentation.Saved事件以检测用户何时将更改保存到PowerPoint中。不用说,这都是精心策划的。
在测试过程中,我们发现,如果用户在不保存更改的情况下关闭PowerPoint,然后对随后出现的“您希望保存更改”对话框回答“是”,则Presentation.Saved
不会触发直到Presentation.CloseFinal
事件已经执行之后,对我们而言,对此做任何事情都为时已晚。 Presentation.CloseFinal
是我们从磁盘检索保存的文件并将其存储到数据库的地方。如果用户单击PowerPoint中的“保存”按钮,则会立即触发Presentation.Saved
。
为了解决该问题,我钩住了PresentationClose
事件并编写了以下代码。
// Detects when the user closes the PowerPoint after changes have been made.
private void Application_PresentationClose(Presentation presentation)
{
// If the user has edited the presentation before closing PowerPoint,// this event fires twice. The first time it fires,presentationSaved
// is msoFalse. That''s how we kNow the user has edited the PowerPoint.
if (presentation.Saved == MsoTriState.msoFalse)
IsDirty = true;
}
然后我检查IsDirty
中的Presentation.CloseFinal
属性,并将PowerPoint保存到数据库(如果将其设置为true
)。
不幸的是,出现了无法预料的皱纹;似乎没有可靠的方法来确定用户是否放弃了更改。第二次触发此事件时,无论用户对“保存更改吗?”的回答如何,Presentation.Saved
属性始终设置为MsoTriState.msoTrue
。对话框。
如果用户放弃了所做的更改,PowerPoint Interop中是否有一种方法可以避免承担将未更改的文件保存到数据库的费用?
作为参考,以下是整个帮助器类:
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Xps.Packaging;
using PropertyChanged; // PropertyChanged.Fody
namespace Helpers
{
/// <summary>
/// Helper class for PowerPoint file handling
/// </summary>
[AddINotifyPropertyChangedInterface]
public sealed class PowerPointApplication : Idisposable
{
private Application _application;
private Presentation _presentation;
private string _tempFolder;
private string _pptPath;
private string _extension;
/// <summary>
/// Used to block the Edit method until the PowerPoint presentation is closed.
/// </summary>
private ManualResetEvent manualResetEvent = new ManualResetEvent(false);
public byte[] PptData { get; private set; }
public byte[] PptxData { get; private set; }
public byte[] JpgData { get; private set; }
/// <summary>
/// Indicates whether any instance of PowerPointApplication is in an edit state.
/// Used to disable Edit PowerPoint buttons.
/// </summary>
public static bool IsEditing { get; private set; }
/// <summary>
/// Indicates if the PowerPoint file has been saved after changes were made to it.
/// </summary>
public bool IsSaved { get; set; }
/// <summary>
/// Indicates if the PowerPoint file has been changed but not saved.
/// </summary>
public bool IsDirty { get; set; }
public PowerPointApplication()
{
_tempFolder = Path.GetTempPath();
if (!Directory.Exists(_tempFolder))
Directory.CreateDirectory(_tempFolder);
_application = new Application();
_application.PresentationSave += Application_PresentationSave;
_application.PresentationClose += Application_PresentationClose;
_application.PresentationCloseFinal += Application_PresentationCloseFinal;
}
// Detects when the user presses the "Save" button in PowerPoint
private void Application_PresentationSave(Presentation presentation)
{
IsSaved = true;
}
// Detects when the user closes the PowerPoint after changes have been made.
private void Application_PresentationClose(Presentation presentation)
{
// If the user has edited the presentation before closing PowerPoint,presentationSaved
// is msoFalse. That''s how we kNow the user has edited the PowerPoint.
// It fires again after the users has responded to the "save changes?" dialog.
if (presentation.Saved == MsoTriState.msoFalse)
IsDirty = true;
}
private void Application_PresentationCloseFinal(Presentation presentation)
{
if ((IsDirty || IsSaved) && File.Exists(_pptPath))
{
var data = File.ReadAllBytes(_pptPath);
if (_extension == "pptx")
{
PptxData = data;
PptData = GetPpt(presentation);
}
else
{
PptData = data;
PptxData = GetPptx(presentation);
}
JpgData = GetJpg(presentation);
IsSaved = true;
IsDirty = false;
}
manualResetEvent.Set();
IsEditing = false;
Task.Run(() => DeleteFileDelayed(_pptPath));
}
/// <summary>
/// Waits for PowerPoint to close,and then makes a best effort to delete the temp file.
/// </summary>
private static void DeleteFileDelayed(string path)
{
if (path == null) return;
var file = new FileInfo(path);
Thread.Sleep(5000);
try
{
file.Delete();
}
catch { }
}
/// <summary>
/// Opens the provided PowerPoint byte array in PowerPoint and displays it.
/// </summary>
public void Edit(byte[] data,string ext = "xml")
{
_extension = ext;
_pptPath = GetTempFile(_extension);
if (data == null)
{
// Open a blank presentation and establish a save path.
_presentation = _application.Presentations.Add(MsoTriState.msoTrue);
_presentation.SaveAs(_pptPath,PpSaveAsFileType.ppSaveAsXMLPresentation);
IsSaved = false;
}
else
{
// Save the data to a file and open it.
File.WriteallBytes(_pptPath,data);
_presentation = _application.Presentations.Open(_pptPath);
IsEditing = true;
}
// Make sure IsEnabled state of WPF buttons is properly set.
ApplicationHelper.DoEvents();
Thread.Sleep(100);
ApplicationHelper.DoEvents();
// Wait for PowerPoint to exit.
manualResetEvent.WaitOne();
}
/// <summary>
/// Opens the provided PowerPoint byte array in PowerPoint without displaying it.
/// </summary>
public void Open(byte[] data,string ext = "xml")
{
_extension = ext;
_pptPath = GetTempFile(ext);
File.WriteallBytes(_pptPath,data);
_presentation = _application.Presentations.Open(_pptPath,WithWindow: MsoTriState.msoFalse);
IsEditing = true;
}
public void Close()
{
_presentation.Close();
}
public byte[] GetJpg() { return GetJpg(_presentation); }
/// <summary>
/// Returns a byte array containing a JPEG image of the first slide in the PowerPoint.
/// </summary>
public byte[] GetJpg(Presentation presentation)
{
presentation.SavecopyAs(_tempFolder,PpSaveAsFileType.ppSaveAsJPG,MsoTriState.msoFalse);
byte[] result = File.ReadAllBytes(Path.Combine(_tempFolder,"Slide1.jpg"));
File.Delete(Path.Combine(_tempFolder,"Slide1.jpg"));
return result;
}
public byte[] GetPptx() { return GetPptx(_presentation); }
public byte[] GetPptx(Presentation presentation)
{
var path = Path.ChangeExtension(_pptPath,"pptx");
presentation.SavecopyAs(path,PpSaveAsFileType.ppSaveAsOpenXMLPresentation,MsoTriState.msoFalse);
byte[] result = File.ReadAllBytes(path);
return result;
}
public byte[] GetPpt(Presentation presentation)
{
var path = Path.ChangeExtension(_pptPath,"ppt");
presentation.SavecopyAs(path,PpSaveAsFileType.ppSaveAsPresentation,MsoTriState.msoFalse);
byte[] result = File.ReadAllBytes(path);
return result;
}
/// <summary>
/// Returns an XPS document of the presentation.
/// </summary>
public XpsDocument ToXps(string pptFilename,string xpsFilename)
{
var presentation = _application.Presentations.Open(pptFilename,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse);
presentation.ExportAsFixedFormat(xpsFilename,PpFixedFormatType.ppFixedFormatTypeXPS);
return new XpsDocument(xpsFilename,FileAccess.Read);
}
/// <summary>
/// Returns a path to a temporary working file having the specified extension.
/// </summary>
private string GetTempFile(string extension)
{
return Path.Combine(_tempFolder,Guid.NewGuid() + "." + extension);
}
#region Idisposable implementation
public void dispose()
{
_application.PresentationSave -= Application_PresentationSave;
_application.PresentationClose -= Application_PresentationClose;
_application.PresentationCloseFinal -= Application_PresentationCloseFinal;
IsEditing = false;
}
#endregion
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
关于powerpoint中怎么做三线表教程和怎么在ppt中做三线表的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于C#添加:在PowerPoint中更改形状的选择、Java使用APACHE POI在PowerPoint中创建图表、Java在PowerPoint中添加上标和下标、PowerPoint Interop:如何检测用户何时关闭PowerPoint而又不保存更改?等相关知识的信息别忘了在本站进行查找喔。
本文标签: