チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Koohji

Koohji

PowerPoint プレゼンテーションを画像に変換すると、様々なメリットがあります。例えば、PowerPoint ソフトウェアにアクセスできない他の人とコンテンツを共有することが容易になります。また、元のプレゼンテーションの書式が保持されるため、コンテンツが意図通りに表示されます。さらに、コンテンツが他者によって編集や変更されることを防止できます。この記事では、Spire.Presentation for C++ を使用して C++ で PowerPoint を画像(JPG, PNG, SVG)に変換する方法について説明します。

Spire.Presentation for C++ をインストールします

Spire.Presentation for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Presentation for C++ を C++ アプリケーションに統合する方法

PowerPoint を JPG または PNG に変換する

Spire.Presentation for C++ には、PowerPoint プレゼンテーションのスライドを JPG または PNG 画像に変換できる ISlide->SaveAsImage() メソッドが用意されています。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します
  • Presentation->LoadFromFile() メソッドを使用して PowerPoint プレゼンテーションをロードします。
  • Presentation->GetSlides() メソッドを使用して、プレゼンテーションのスライドコレクションにアクセスします。
  • コレクション内のスライドをループします。
  • ISlide->SaveAsImage() メソッドを使用して、各スライドを画像ストリームに保存します。
  • Stream->Save() メソッドを使用して、画像ストリームを JPG または PNG ファイルに保存します。
  • C++
#include "Spire.Presentation.o.h"
using namespace Spire::Presentation;
using namespace std;

int main()
{
	//Presentationクラスのインスタンスを初期化する
	Presentation* ppt = new Presentation();
	//PowerPointプレゼンテーションをロードする
	ppt->LoadFromFile(L"Sample.pptx");

	//プレゼンテーションのスライドコレクションを取得する 
	SlideCollection* slides = ppt->GetSlides();

	//コレクション内のスライドをループする
	for (int i = 0; i < slides->GetCount(); i++)
	{
		ISlide* slide = slides->GetItem(i);
		//各スライドをPNG ファイルに保存する
		Stream* image = slide->SaveAsImage();
		image->Save(( L"Images\\ToImage_img_" + to_wstring(i) + L".png").c_str());
	}

	ppt->Dispose();
	delete ppt;
}

C++:PowerPoint を画像(JPG, PNG, SVG)に変換する方法

PowerPoint を特定サイズの JPG または PNG に変換する

ISlide->SaveAsImage(int width, int height) メソッドを使用して、PowerPoint プレゼンテーションのスライドを特定のサイズの JPG または PNG 画像に変換できます。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します
  • Presentation->LoadFromFile() メソッドを使用して PowerPoint プレゼンテーションをロードします。
  • Presentation->GetSlides() メソッドを使用してプレゼンテーションのスライドコレクションにアクセスします。
  • コレクション内のスライドをループします。
  • ISlide->SaveAsImage(int width, int height) メソッドを使用して、各スライドを画像ストリームに保存します。
  • Stream->Save() メソッドを使用して、画像ストリームを JPG または PNG ファイルに保存します。
  • C++
#include "Spire.Presentation.o.h"
using namespace Spire::Presentation;
using namespace std;

int main()
{
	//Presentationクラスのインスタンスを初期化する
	Presentation* ppt = new Presentation();
	//PowerPointプレゼンテーションをロードする
	ppt->LoadFromFile(L"Sample.pptx");

	//プレゼンテーションのスライドコレクションを取得する
	SlideCollection* slides = ppt->GetSlides();

	//コレクション内のスライドをループする
	for (int i = 0; i < slides->GetCount(); i++)
	{
		ISlide* slide = slides->GetItem(i);
		//各スライドを600 x 400ピクセルのPNG画像として保存する
		Stream* image = slide->SaveAsImage(600, 400);
		image->Save(( L"ImagesWithSpecificSize\\ToImage_img_" + to_wstring(i) + L".png").c_str());
	}

	ppt->Dispose();
	delete ppt;
}

C++:PowerPoint を画像(JPG, PNG, SVG)に変換する方法

PowerPoint を SVG に変換する

ISlide->SaveToSVG() メソッドを使用して、PowerPoint プレゼンテーションのスライドを SVG 画像に変換することができます。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します
  • Presentation->LoadFromFile() メソッドを使用して PowerPoint プレゼンテーションをロードします。
  • Presentation->GetSlides() メソッドを使用してプレゼンテーションのスライドコレクションにアクセスします。
  • コレクション内のスライドをループします。
  • ISlide->SaveToSVG() メソッドを使用して、各スライドを SVG ストリームに保存します。
  • Stream->Save() メソッドを使用して SVG ストリームを SVG ファイルに保存します。
  • C++
#include "Spire.Presentation.o.h"
using namespace Spire::Presentation;
using namespace std;

int main()
{
	//Presentationクラスのインスタンスを初期化する
	Presentation* ppt = new Presentation();
	//PowerPointプレゼンテーションをロードする
	ppt->LoadFromFile(L"Sample.pptx");

	//プレゼンテーションのスライドコレクションを取得する
	SlideCollection* slides = ppt->GetSlides();
	
	//PowerPointをSVGに変換する際にノートを残すかどうかを設定する
	ppt->SetIsNoteRetained(true);
	
	//コレクション内のスライドをループする
	for (int i = 0; i < slides->GetCount(); i++)
	{
		ISlide* slide = slides->GetItem(i);
		//各スライドをSVG画像として保存する
		Stream* svg = slide->SaveToSVG();
		svg->Save((L"SvgImages\\ToSVG-" + to_wstring(i) + L".svg").c_str());
	}

	ppt->Dispose();
	delete ppt;
}

C++:PowerPoint を画像(JPG, PNG, SVG)に変換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PowerPoint のハイパーリンクとは、同じ/別の PowerPoint 内の他のスライドにや、特定の Web サイトにジャンプすることができるクリック可能なオブジェクトです。これらはスライドに追加のリソースを追加する素晴らしい方法であり、文書をよりインタラクティブにすることもできます。Spire.Presentation for Java では、PowerPoint 文書にハイパーリンクを追加するだけでなく、既存のハイパーリンクを変更または削除することもサポートしています。この記事では、上記の2つの機能をどのように実現するかを紹介します。

Spire.Presentation for Java をインストールします

まず、Spire.Presentation for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation</artifactId>
        <version>8.3.2</version>
    </dependency>
</dependencies>

PowerPoint 内のハイパーリンクを変更する

Spire.Presentation for Java を使用すると、既存のハイパーリンクのアドレスとアンカーテキストを変更することができます。以下は PowerPoint でハイパーリンクを変更する詳細な手順です。

  • Presentation オブジェクトを作成し、Presentation.loadFromFile() メソッドを使用して PowerPoint をロードします。
  • Presentation.getSlides().get() メソッドを使用して、指定されたスライドを取得します。
  • ISlide インターフェイスの getShapes()メソッドを使用して、指定されたスライドの図形を取得します。
  • ShapeList.get() メソッドを使用してハイパーリンクを含む指定された図形を取得します。
  • IAutoShape.getTextFrame().getTextRange() メソッドを使用して既存のハイパーリンクのテキスト範囲を取得します。
  • PortionEx.setText() メソッドを使用してテキスト範囲の新しいハイパーリンクのテキストを設定します。
  • TextCharacterProperties.getClickAction() メソッドを使用してテキスト範囲の既存のハイパーリンクを取得します。
  • ClickHyperlink.setAddress() メソッドを使用して新しいハイパーリンクのアドレスを設定します。
  • Presentation.saveToFile() メソッドを使用して文書に保存します。
  • Java
import com.spire.presentation.*;

public class modifyHyperlink {
    public static void main(String[] args) throws Exception {

        //Presentationオブジェクトを作成し、PowerPointをロードする
        Presentation presentation = new Presentation();
        presentation.loadFromFile("test.pptx");

        //ハイパーリンクを含む図形を取得する
        IAutoShape shape = (IAutoShape)presentation.getSlides().get(0).getShapes().get(0);

        //ハイパーリンクのテキストとアドレスを編集する
        shape.getTextFrame().getTextRange().setText("Spire.Presentation for Java");
        shape.getTextFrame().getTextRange().getClickAction().setAddress("https://jp.e-iceblue.com/introduce/spire-presentation-for-java.html");

        //文書に保存する
        presentation.saveToFile("ModifyHyperlink.pptx", FileFormat.PPTX_2013);
    }
}

Java:PowerPoint 内のハイパーリンクを変更または削除する方法

PowerPoint 内のハイパーリンクを削除する

何らかの理由でハイパーリンクを削除する必要がある場合、Spire.Persentation for Java は TextCharacterProperties.setClickAction() メソッドを提供します。その値を null に設定すると、PowerPoint でハイパーリンクを削除できます。詳細な手順は次のとおりです。

  • Presentation オブジェクトを作成し、Presentation.loadFromFile() メソッドを使用して PowerPoint をロードします。
  • Presentation.getSlides().get() メソッドを使用して、指定されたスライドを取得します。
  • ISlide インターフェイスの getShapes() メソッドを使用して、指定されたスライドの図形を取得します。
  • ShapeList.get() メソッドを使用してハイパーリンクを含む指定された図形を取得します。
  • IAutoShape.getTextFrame().getTextRange() メソッドを使用して既存のハイパーリンクのテキスト範囲を取得します。
  • TextCharacterProperties.setClickAction() メソッドの値を null に設定してハイパーリンクを削除します。
  • Presentation.saveToFile() メソッドを使用して文書に保存します。
  • Java
import com.spire.presentation.*;

public class removeHyperlink {
    public static void main(String[] args) throws Exception {

        //Presentationオブジェクトを作成し、PowerPointをロードする
        Presentation presentation = new Presentation();
        presentation.loadFromFile("test.pptx");

        //ハイパーリンクを含む図形を取得する
        IAutoShape shape = (IAutoShape)presentation.getSlides().get(0).getShapes().get(0);

        //クリックアクションをnullに設定してハイパーリンクを削除する
        shape.getTextFrame().getTextRange().setClickAction(null);

        //文書に保存する
        presentation.saveToFile("RemoveHyperlink.pptx", FileFormat.PPTX_2013);
    }
}

Java:PowerPoint 内のハイパーリンクを変更または削除する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

複数の Excel ファイルに保存されたデータをまとめる必要がある場合、Excel のマージは重要なツールです。例えば、各四半期の売上レポートを1つのファイルに統合することで、全年のデータをより包括的なビューで確認することができます。また、Excel をマージすることで、複数のファイルを切り替えるのではなく、同じ組織化されたワークブックにデータを保存できます。これにより、作業プロセスが効率化され、生産性が向上します。この記事では、Spire.XLS for C++ を使用して C++ で Excel ファイルを マージする方法について説明します。

Spire.XLS for C++ をインストールします

Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.XLS for C++ を C++ アプリケーションに統合する方法

複数のワークブックを1つにマージする

複数のワークブックを1つにまとめるには、新しいワークブックを作成し、元のワークブックからシートをコピーして新しいワークブックに貼り付けます。具体的な手順は以下の通りです。

  • 元のワークブックのパスをコンテナに入れます。
  • Workbook オブジェクトを初期化します。
  • 新しいワークブックを作成し、デフォルトのシートを削除します。
  • 一時的な Workbook オブジェクトを初期化します。
  • コンテナ内のワークブックをループします。
  • Workbook->LoadFromFile() メソッドを使用して、ワークブックを一時的な Workbook オブジェクトにロードします。
  • ワークブック内のシートをループします。
  • Workbook->GetWorksheets()->AddCopy() メソッドを使用して、各シートを新しいワークブックにコピーします。
  • Workbook->SaveToFile() メソッドを使用して、結果ワークブックをファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;

int main()
{
	//ワークブックのパスをコンテナに入れる
	std::vector<std::wstring> files = { L"File1.xlsx", L"File2.xlsx", L"File3.xlsx" };;

	//Workbookオブジェクトを初期化して新しいワークブックを作成する
	Workbook* newWorkbook = new Workbook();
	newWorkbook->SetVersion(ExcelVersion::Version2013);
	//デフォルトのシートを削除する
	newWorkbook->GetWorksheets()->Clear();

	//一時的な Workbook オブジェクトを初期化する
	Workbook* tempWorkbook = new Workbook();

	//コンテナ内のワークブックをループする
	for (auto file : files)
	{
		//現在のワークブックをロードする
		tempWorkbook->LoadFromFile(file.c_str());
		//ワークブック内のすべてのシートをループする
		for (int i = 0; i < tempWorkbook->GetWorksheets()->GetCount(); i++)
		{
			Worksheet* sheet = tempWorkbook->GetWorksheets()->Get(i);
			//各シートを新しいワークブックにコピーする
			(dynamic_cast<XlsWorksheetsCollection*>(newWorkbook->GetWorksheets()))->AddCopy(sheet, WorksheetCopyType::CopyAll);
		}
	}

	//結果ブックをファイルに保存する
	newWorkbook->SaveToFile(L"MergeExcelFiles.xlsx", ExcelVersion::Version2013);
	newWorkbook->Dispose();
	tempWorkbook->Dispose();
	delete newWorkbook;
	delete tempWorkbook;
}

C++:Excel ファイルを マージする方法

複数のワークシートを1つにマージする

元のシートから使用データ範囲をコピーして、目的のシートに貼り付けることで、複数のシートを1つのシートにマージできます。以下の手順では、同じワークブック内の2つのシートを1つにマージする方法を説明します。

  • Workbook オブジェクトを初期化し、Workbook->LoadFromFile() メソッドを使用して Excel ワークブックをロードします。
  • Workbook->GetWorksheets()->Get(int index) メソッドを使用して、特定のシートを取得します(ここでのシートインデックスは0から始まります)。
  • Worksheet->GetAllocatedRange() メソッドを使用して、sheet2 の使用範囲を取得します。
  • Worksheet->GetRange(int row, int column) メソッドを使用して、sheet1 の目的範囲を指定します(ここでの行と列のインデックスは1から始まります)。
  • CellRange->Copy(CellRange destRange) メソッドを使用して、sheet2 の使用範囲を sheet1 の目的範囲にコピーします 。
  • XlsWorksheet->Remove() メソッドを使用して、ブックから sheet2 を削除します。
  • Workbook->SaveToFile() メソッドを使用して、結果ワークブックをファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;


int main()
{
	//Workbookオブジェクトを初期化する	
	Workbook* workbook = new Workbook();
	//Excelワークブックをロードする
	workbook->LoadFromFile(L"Sample.xlsx");

	//sheet1を取得する
	Worksheet* sheet1 = workbook->GetWorksheets()->Get(0);
	//sheet2を取得する
	Worksheet* sheet2 = workbook->GetWorksheets()->Get(1);

	//sheet2の使用範囲を取得する
	CellRange* sourceRange = sheet2->GetAllocatedRange();
	//sheet1の目的範囲を指定する
	CellRange* destRange = sheet1->GetRange(sheet1->GetLastRow() + 1, 1); 

	//sheet2の使用範囲をsheet1の目的範囲にコピーする
	sourceRange->Copy(destRange);

	//sheet2を削除する
	sheet2->Remove();

	//結果ブックをファイルに保存する
	workbook->SaveToFile(L"MergeExcelWorksheets.xlsx", ExcelVersion::Version2013);
	workbook->Dispose();
	delete workbook;
}

C++:Excel ファイルを マージする方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.Presentation 8.3.2のリリースを発表できることをうれしく思います。このバージョンでは、PPTのグラフデータを編集する際にエラーダイアログが表示される問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREPPT-2205 PPTのグラフデータを編集する際にエラーダイアログが表示される問題が修正されました。
ここで Spire. Presentation 8.3.2をダウンロードする

Microsoft Wordの「検索と置換」は、ドキュメント編集時に重要な機能です。Word ドキュメント内の特定のテキストを素早く検索し、一度にすべてのインスタンスを置き換えることができます。これは、大規模な Word ドキュメントで情報を更新したり、つづりの間違いを修正する必要がある場合に特に役立ちます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書内のテキストを検索して置換する方法について説明します。

Spire.Doc for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

テキストを検索して、そのすべてのインスタンスを新しいテキストに置き換える

テキストを検索し、そのすべてのインスタンスを別のテキストに置き換えるには、Document->Replace() メソッドを使用してください。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • 特定のテキストを検索し、Document->Replace() メソッドを使用してすべてのインスタンスを別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* document = new Document();
	//Wordドキュメントをロードする
	document->LoadFromFile(L"Input.docx");

	//特定のテキストを検索して、すべてのインスタンスを別のテキストに置換える
	document->Replace(L"Spire.Doc", L"E-iceblue", false, true);

	//結果ドキュメントを保存する
	document->SaveToFile(L"ReplaceAllInstances.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word 文書内のテキストを検索して置換する方法

テキストを検索して、その最初のインスタンスを新しいテキストに置き換える

Spire.Doc for C++ は置換モードを変更できる Document->SetReplaceFirst() メソッドを提供します。変更後、すべてのインスタンスではなく最初のインスタンスを置き換えできます。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document->SetReplaceFirst(true) メソッドを使用して、置換モードを変更します。
  • Document->Replace() メソッドを使用して、テキストの最初のインスタンスを別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* document = new Document();
	//Wordドキュメントをロードする
	document->LoadFromFile(L"Input.docx");

	//置換モードを変更する
	document->SetReplaceFirst(true);

	//テキストの最初のインスタンスを別のテキストに置き換える
	document->Replace(L"Spire.Doc", L"E-iceblue", false, true);

	//結果ドキュメントを保存する
	document->SaveToFile(L"ReplaceFirstInstance.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word 文書内のテキストを検索して置換する方法

正規表現を使用してテキストを検索して置き換える

Document->Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置き換えることができます。そして、Regex インスタンスと新しいテキストをパラメータとしてメソッドに渡します。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Regex クラスのインスタンスを初期化して正規表現を作成します。
  • Document->Replace() メソッドを使用して、正規表現に一致するテキストを検索し、別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* doc = new Document();
	//Wordドキュメントをロードする	
	doc->LoadFromFile(L"Input1.docx");

	//#で始まるテキストに一致する正規表現を作成する
	Regex* regex = new Regex(L"\\#\\w+\\b");

	//正規表現に一致するテキストを検索し、別のテキストに置き換える
	doc->Replace(regex, L"E-iceblue");

	//結果ドキュメントを保存する
	doc->SaveToFile(L"ReplaceWithRegex.docx", FileFormat::Docx2013);
	doc->Close();
	delete doc;
}

C++:Word 文書内のテキストを検索して置換する方法

テキストを検索して画像に置き換える

Spire.Doc for C++ には、テキストを画像に置き換える直接的な方法はありません。しかし、テキストの位置に画像を挿入して、テキストを削除することで実現できます。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document->FindAllString() メソッドを使用して特定のテキストを検索し、そのテキストをコンテナに格納します。
  • コンテナのテキストをループします。
  • DocPicture クラスのインスタンスを初期化します。
  • DocPicture->LoadImageSpire() メソッドを使用して画像をロードします。
  • 検索されたテキストを単一テキスト範囲として取得し、その段落内のテキスト範囲のインデックスを取得します。
  • テキスト範囲の位置に画像を挿入し、ドキュメントからテキスト範囲を削除します。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* doc = new Document();
	//Wordドキュメントをロードする
	doc->LoadFromFile(L"Input.docx");
	//特定のテキストを検索し、結果をコンテナに格納する
	vector<TextSelection*> selections = doc->FindAllString(L"Spire.Doc", true, true);
	int index = 0;
	TextRange* range = nullptr;

	//コンテナのテキストをループする
	for (auto selection : selections)
	{
		//画像をロードする
		DocPicture* pic = new DocPicture(doc);
		pic->LoadImageSpire(L"image.png");
		//検索されたテキストを単一テキスト範囲として取得する
		range = selection->GetAsOneRange();
		//その段落内のテキスト範囲のインデックスを取得する
		index = range->GetOwnerParagraph()->GetChildObjects()->IndexOf(range);
		//インデックスに画像を挿入する
		range->GetOwnerParagraph()->GetChildObjects()->Insert(index, pic);
		//テキスト範囲を削除する
		range->GetOwnerParagraph()->GetChildObjects()->Remove(range);
	}

	//結果ドキュメントを保存する
	doc->SaveToFile(L"ReplaceWithImage.docx", FileFormat::Docx2013);
	doc->Close();
	delete doc;
}

C++:Word 文書内のテキストを検索して置換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Excel は、スプレッドシートの作成と管理に適したツールです。しかし、スプレッドシートを他人と共有することに関しては、Excel は最適とは言えないかもしれません。Excel の表を完成させたらすぐに PDF に変換すれば、スプレッドシートの書式を維持したまま、さまざまなデバイスで完璧に表示することができます。さらに、PDF は安全で、内容を不正に変更されないように暗号化することができます。

この記事では、Spire.XLS for C++ を使用して、Excel ワークブックを PDF に変換する方法と、Excel ワークシートを PDF に変換する方法について説明します。

Spire.XLS for C++ をインストールします

Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.XLS for C++ を C++ アプリケーションに統合する方法

Excel ワークブックを PDF ファイルに変換する

Spire.XLS for C++ は、Workbook->SaveToFile(LPCWSTR_S filename, FileFormat fileFormat) メソッドを提供して、ワークブック全体を PDF、HTML、CSV、XPS などの他のフォーマットのファイルに変換します。また、変換時にセルの高さと幅を自動的に調整するかどうかなど、変換オプションを指定するための ConverterSetting クラスも提供されています。以下は、Excel ワークブックを PDF に変換するための手順です。

  • Workbook のオブジェクトを作成します。
  • Workbook->LoadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
  • Workbook->GetConverterSetting()->SetSheetFitToPage() メソッドを使用して、変換時にワークシートがページに収まるように設定します。
  • Workbook->SaveToFile() メソッドを使用して、ワークブックを PDF に変換します。
  • C++
#include "Spire.Xls.o.h"

using namespace Spire::Xls;

int main() {

	//Workbookのオブジェクトを作成する
	Workbook* workbook = new Workbook();

	//Excelファイルを読み込む
	workbook->LoadFromFile(L"C:/家庭の予算.xlsx");

	//変換時にページに合わせてワークシートを設定する
	workbook->GetConverterSetting()->SetSheetFitToPage(true);

	//ワークブックをPDFファイルとして保存する
	workbook->SaveToFile(L"ExcelからPDFへの変換.pdf", FileFormat::PDF);
	workbook->Dispose();
}

C++:Excel のワークブックまたはワークシートを PDF に変換する方法

特定のワークシートを PDF ファイルに変換する

特定のワークシートを PDF として書き出すには、Workbook->GetWorksheets()->Get(index) メソッドでワークシートを取得し、Worksheet->SaveToPdf(LPCWSTR_S filename) メソッドを使用して PDF ファイルに保存する必要があります。以下、詳しい手順を説明します。

  • Workbook のオブジェクトを作成します。
  • Workbook->LoadFromFile() を使用して、Excel ファイルを読み込みます。
  • Workbook->GetConverterSetting()->SetSheetFitToPage() メソッドを使用して、変換時にワークシートがページに収まるように設定します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して、特定のワークシートを取得します。
  • Worksheet->SaveToPdf() メソッドを使用して、そのワークシートを PDF に変換します。
  • C++
#include "Spire.Xls.o.h"

using namespace Spire::Xls;

int main() {

	//Workbookのオブジェクトを作成する
	Workbook* workbook = new Workbook();

	//Excelファイルを読み込む
	workbook->LoadFromFile(L"C:/家庭の予算.xlsx");

	//変換時にページに合わせてワークシートを設定する
	workbook->GetConverterSetting()->SetSheetFitToPage(true);

	//指定したワークシートを取得する
	Worksheet* sheet = workbook->GetWorksheets()->Get(3);

	//ワークシートをPDFファイルとして保存する
	sheet->SaveToPdf(L"ExcelからPDFへの変換.pdf");
	workbook->Dispose();
}

C++:Excel のワークブックまたはワークシートを PDF に変換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.PDF for Java 9.3.11のリリースを発表できることをうれしく思います。今回の更新では、画像を圧縮する際にメモリの消費量が最適化されました。同時に、PDFからHTMLとSVGへの変換機能が強化されました。また、透かしを追加した後に文書のサイズが大幅に増大するなど、既知の問題も修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREPDF-5221 画像を圧縮する際にメモリ消費量を最適化しました。
Bug SPIREPDF-5727 透かしを追加すると文書のサイズが大幅に増大する問題が修正されました。
Bug SPIREPDF-5828 変換されたPDF/A 1 AドキュメントがveraPDFで検証に失敗する問題が修正されました。
Bug SPIREPDF-5842 PDFをHtmlに変換する際にプログラムが「NullPointerException」をスローする問題が修正されました。
Bug SPIREPDF-5861 PDFをSVGに変換する際に文字が重なる問題が修正されました。
Bug SPIREPDF-5880 PDF編集権限の削除が無効だった問題が修正されました。
ここでSpire.PDF for Java 9.3.11をダウンロードする

Spire.XLS Standard Edition 12.12のリリースを発表できることを嬉しく思います。このリリースでは、文書を保存する際にプログラムが「Some parts of this workbook may have been repaired or discarded」をスローした問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREXLS-4571 文書を保存する際にプログラムが「Some parts of this workbook may have been repaired or discarded」をスローした問題が修正されました。
ここで Spire.XLS Standard Edition 12.12をダウンロードする

Word では、他の人が情報を入力するために使用できるフォームを作成することができます。記入可能なフォームは、多くの人からデータやフィードバックを収集する必要があり、書式に一貫性があることを確認したい場合に特に便利です。ここでは、Word ドキュメントで記入可能なフォームを作成するために必要なツールを紹介します。

  • コンテンツ コントロール:ユーザーが情報を入力するためのフォーム領域です。
  • :フォームのテキストやフォームフィールドを整列させ、フォームの枠線やセルなどの要素を形成するために使用します。
  • 保護:ユーザーがフィールドに入力することを許可しますが、ドキュメントの他の部分を変更することはできません。

Word のコンテンツコントロールは、ユーザーが構造化ドキュメントを作成するために使用することができるコンテンツ コンテナです。 構造化されたドキュメントは、ドキュメントのどこにコンテンツが表示されるかを制御します。Word 2013 では、基本的に10種類のコンテンツ コントロールが利用可能です。この記事では、Spire.Doc for C++ を使用して、以下の7つの一般的なコンテンツ コントロールで構成される Word ドキュメントに記入可能なフォームを作成する方法を説明します。

コンテンツ コントロール 説明
テキスト 書式なしテキストを入力できるようにします。
リッチ テキスト 書式付きテキストのほか、表、画像、コンテンツ コントロールなどのコンテンツを入力できるようにします。
画像 1枚の画像を入力できるようにします。
ドロップダウン リスト 定義済みのリストから項目を選択できるようにします。
コンボ ボックス 定義済みのリストから項目を選択したり、ユーザー自身が情報を入力したりすることができるようにします。
チェック ボックス ユーザーがチェックできるようにします。
日付選択 カレンダーから日付を選択できるようにします。

Spire.PDF for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word ドキュメント内に記入可能なフォームを作成する

Spire.Doc for C++ が提供する StructureDocumentTagInline クラスは、段落内の DrawingML やフィールドなどのインライン構造用の構造化ドキュメントタグを作成するために使用されます。 このクラスの下にある SDTPropertiesSDTContent プロパティでは、対応する構造化ドキュメントタグのプロパティとコンテンツを設定することができます。 以下は、Word ドキュメントで記入可能なフォームを作成するための詳細な手順です。

  • Document のオブジェクトを作成します。
  • Document->AddSection() メソッドを使用して、セクションを追加します。
  • Section->AddTable() メソッドを使用して、テーブルを追加します。
  • TableCell->AddParagraph() メソッドを使用して、セルに段落を追加します。
  • StructureDocumentTagInline のオブジェクトを作成し、Paragraph->GetChildObjects()->Add() メソッドを使用して子オブジェクトとして段落に追加します。
  • StructureDocumentTagInline のオブジェクトの SDTPropertiesSDTContent プロパティを使用して、構造化ドキュメントタグのプロパティとコンテンツを設定します。 構造化ドキュメントタグのタイプは、SDTProperties->SetSDTType() メソッドで設定することができます。
  • Document->Protect() メソッドを使用して、ユーザーがフォームフィールド外のコンテンツを編集することを許可しないように設定します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

    //Documentのオブジェクトを作成する
    Document* doc = new Document();

    //セクションを追加する
    Section* section = doc->AddSection();

    //表を追加する
    Table* table = section->AddTable(true);
    table->ResetCells(7, 2);

    //1列目のセルにテキストを追加する
    Paragraph* paragraph = table->GetRows()->GetItem(0)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"テキスト コンテンツ コントロール");
    paragraph = table->GetRows()->GetItem(1)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"リッチ テキスト コンテンツ コントロール");
    paragraph = table->GetRows()->GetItem(2)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"画像コンテンツ コントロール");
    paragraph = table->GetRows()->GetItem(3)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"ドロップダウン リスト コンテンツコントロール");
    paragraph = table->GetRows()->GetItem(4)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"チェック ボックス コンテンツ コントロール");
    paragraph = table->GetRows()->GetItem(5)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"コンボ ボックス コンテンツ コントロール");
    paragraph = table->GetRows()->GetItem(6)->GetCells()->GetItem(0)->AddParagraph();
    paragraph->AppendText(L"日付選択コンテンツ コントロール");

    //セル(0,1)にテキスト コンテンツ コントロールを追加する
    paragraph = table->GetRows()->GetItem(0)->GetCells()->GetItem(1)->AddParagraph();
    StructureDocumentTagInline* sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::Text);
    sdt->GetSDTProperties()->SetAlias(L"テキスト");
    sdt->GetSDTProperties()->SetTag(L"テキスト");
    sdt->GetSDTProperties()->SetIsShowingPlaceHolder(true);
    SdtText* text = new SdtText(true);
    text->SetIsMultiline(false);
    sdt->GetSDTProperties()->SetControlProperties(text);
    TextRange* tr = new TextRange(doc);
    tr->SetText(L"ここをクリックまたはタップしてテキストを入力してください。");
    sdt->GetSDTContent()->GetChildObjects()->Add(tr);

    //セル(1,1)にリッチ テキスト コンテンツ コントロールを追加する
    paragraph = table->GetRows()->GetItem(1)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::RichText);
    sdt->GetSDTProperties()->SetAlias(L"リッチ テキスト");
    sdt->GetSDTProperties()->SetTag(L"リッチ テキスト");
    sdt->GetSDTProperties()->SetIsShowingPlaceHolder(true);
    text = new SdtText(true);
    text->SetIsMultiline(false);
    sdt->GetSDTProperties()->SetControlProperties(text);
    tr = new TextRange(doc);
    tr->SetText(L"ここをクリックまたはタップしてテキストを入力してください。");
    sdt->GetSDTContent()->GetChildObjects()->Add(tr);

    //セル(2,1)に画像コンテンツ コントロールを追加する
    paragraph = table->GetRows()->GetItem(2)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::Picture);
    sdt->GetSDTProperties()->SetAlias(L"画像");
    sdt->GetSDTProperties()->SetTag(L"画像");
    SdtPicture* sdtPicture = new SdtPicture();
    sdt->GetSDTProperties()->SetControlProperties(sdtPicture);
    DocPicture* pic = new DocPicture(doc);
    pic->LoadImageSpire(L"C:/Workspace.png");
    sdt->GetSDTContent()->GetChildObjects()->Add(pic);

    //セル(3,1)にドロップダウン リスト コンテンツ コントロールを追加する
    paragraph = table->GetRows()->GetItem(3)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    sdt->GetSDTProperties()->SetSDTType(SdtType::DropDownList);
    sdt->GetSDTProperties()->SetAlias(L"ドロップダウン リスト");
    sdt->GetSDTProperties()->SetTag(L"ドロップダウン リスト");
    paragraph->GetChildObjects()->Add(sdt);
    SdtDropDownList* sddl = new SdtDropDownList();
    sddl->GetListItems()->Add(new SdtListItem(L"アイテムを選択してください。", L"1"));
    sddl->GetListItems()->Add(new SdtListItem(L"アイテム 2", L"2"));
    sddl->GetListItems()->Add(new SdtListItem(L"アイテム 3", L"3"));
    sddl->GetListItems()->Add(new SdtListItem(L"アイテム 4", L"4"));
    sdt->GetSDTProperties()->SetControlProperties(sddl);
    tr = new TextRange(doc);
    tr->SetText(sddl->GetListItems()->GetItem(0)->GetDisplayText());
    sdt->GetSDTContent()->GetChildObjects()->Add(tr);

    //セル(4,1)にチェック ボックス コンテンツ コントロールを2つ追加する
    paragraph = table->GetRows()->GetItem(4)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::CheckBox);
    SdtCheckBox* scb = new SdtCheckBox();
    sdt->GetSDTProperties()->SetControlProperties(scb);
    tr = new TextRange(doc);
    sdt->GetChildObjects()->Add(tr);
    scb->SetChecked(false);
    paragraph->AppendText(L" オプション 1");

    paragraph = table->GetRows()->GetItem(4)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::CheckBox);
    scb = new SdtCheckBox();
    sdt->GetSDTProperties()->SetControlProperties(scb);
    tr = new TextRange(doc);
    sdt->GetChildObjects()->Add(tr);
    scb->SetChecked(false);
    paragraph->AppendText(L" オプション 2");

    //セル(5,1)にコンボ ボックス コンテンツ コントロールを追加する。
    paragraph = table->GetRows()->GetItem(5)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::ComboBox);
    sdt->GetSDTProperties()->SetAlias(L"コンボ ボックス");
    sdt->GetSDTProperties()->SetTag(L"コンボ ボックス");
    SdtComboBox* cb = new SdtComboBox();
    cb->GetListItems()->Add(new SdtListItem(L"アイテムを選択してください。"));
    cb->GetListItems()->Add(new SdtListItem(L"アイテム 2"));
    cb->GetListItems()->Add(new SdtListItem(L"アイテム 3"));
    sdt->GetSDTProperties()->SetControlProperties(cb);
    tr = new TextRange(doc);
    tr->SetText(cb->GetListItems()->GetItem(0)->GetDisplayText());
    sdt->GetSDTContent()->GetChildObjects()->Add(tr);

    //セル(6,1)に日付選択コンテンツ コントロールを追加する
    paragraph = table->GetRows()->GetItem(6)->GetCells()->GetItem(1)->AddParagraph();
    sdt = new StructureDocumentTagInline(doc);
    paragraph->GetChildObjects()->Add(sdt);
    sdt->GetSDTProperties()->SetSDTType(SdtType::DatePicker);
    sdt->GetSDTProperties()->SetAlias(L"日付選択");
    sdt->GetSDTProperties()->SetTag(L"日付選択");
    SdtDate* date = new SdtDate();
    date->SetCalendarType(CalendarType::Default);
    date->SetDateFormatSpire(L"yyyy.MM.dd");
    date->SetFullDate(DateTime::GetNow());
    sdt->GetSDTProperties()->SetControlProperties(date);
    tr = new TextRange(doc);
    tr->SetText(L"クリックまたはタップして日付を入力してください。");
    sdt->GetSDTContent()->GetChildObjects()->Add(tr);

    paragraph->GetStyle()->GetCharacterFormat()->SetFontName(L"Yu Gothic UI");

    //ユーザーがフォームフィールドを編集することのみを許可するように設定する
    doc->Protect(ProtectionType::AllowOnlyFormFields, L"password");

    //ドキュメントを保存する
    doc->SaveToFile(L"Output/フォーム.docx", FileFormat::Docx2013);
    doc->Close();
    delete doc;
}

C++:Word 文書内に記入可能なフォームを作成する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.SpreadSheet 7.3.0のリリースを発表できることを嬉しく思います。このバージョンは、フィルターの並べ替え項目を非表示にする機能をサポートしました。また、列および行のタイトルバーを非表示にすると、現在アクティブなシートのみが有効になっていた問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPREADSHEET-213 フィルターの並べ替え項目を非表示にする機能をサポートしました。
this.spreadsheet1.HideSortItemInFilter = true;
Bug SPREADSHEET-214 列および行のタイトルバーを非表示にすると、現在アクティブなシートのみが有効になっていた問題が修正されました。
ここで Spire.Spreadsheet 7.3.0をダウンロードする