エクセルツール

C#でPowerPointファイルを表示する方法

公開済み 2024年4月3日
共有:

イントロダクション

ソフトウェア開発の分野において、豊かで魅力的なユーザーエクスペリエンスを提供するためには、多くのメディア種類をプログラムに組み込む能力が必要です。 Microsoft Office PowerPointのプレゼンテーションは情報を伝達するために頻繁に使用されるため、C# WinFormsプログラムにPowerPointビューアコントロールを組み込むことは有利です。 この記事では、そのような種類の制御を統合し、開発者がアプリにPowerPoint閲覧機能を追加して改良する方法について説明します。 この記事では、MS PowerPoint ViewerをインストールせずにC# PowerPoint Viewerを作成します。

C#でPowerPointファイルを表示する方法

  1. PowerPointアプリケーションインスタンスを作成します。

  2. プロジェクトにInterop参照を追加する

  3. インスタンスを使用してプレゼンテーションを開く。

  4. エクスポートファイルの出力フォルダーを確認して作成します。

  5. スライド画像をPictureボックスに読み込む。 ボタンを使用してスライドを移動します。

  6. プレゼンテーションを閉じてアプリケーションを終了します。

パワーポイントビューアコントロールを理解する

PowerPointプレゼンテーションは、教育やビジネスを含むさまざまな分野で広く使用されています。 WinFormsアプリケーションにPowerPointビューアーコントロールを組み込むことにはいくつかの利点があります。

  • スムーズな統合: ユーザーがアプリケーション内でPowerPointプレゼンテーションを表示および操作できるようにすることで、さまざまなプログラム間を切り替える時間を短縮し、ワークフローを効率化することができます。
  • 機能強化されたユーザーエクスペリエンス: このプログラムは、PowerPointスライドを操作するためのわかりやすいインターフェースを提供することで、ユーザーエクスペリエンスと効率性を向上させます。
  • 柔軟性の向上: .NET アプリケーションの Windows 開発者向けに、ナビゲーションコントロールを追加したり表示モードを導入したりすることで、開発者はビューアーコントロールをユニークなニーズに合わせてカスタマイズすることができます。

参照の追加

最初に必要なアセンブリの参照を追加します: プロジェクトに Microsoft.Office.Interop.PowerPoint 参照を追加するには、Visual Studio でプロジェクトを右クリックし、「追加」>「参照」を選択し、COM タブからそれらを追加します。

パワーポイントビューアー

について Microsoft.Office.Interop.PowerPoint 名前空間には、プログラム的にPowerPointプレゼンテーションを操作するためのクラスとメソッドが含まれています。 システムにPowerPointがインストールされていることを確認してください。 以下のコードを解説し、前述の例に基づいて説明します:

using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
    public partial class PowerPointViewer : Form
    {
        private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
        private Presentation pptPresentation;
        private string outputFolder = @"output_images";
        private int slideIndex = 1;
        public PowerPointViewer()
        {
            InitializeComponent();
        }
        private void DisplaySlide()
        {
            if (!Directory.Exists(outputFolder))
                Directory.CreateDirectory(outputFolder);
            // Export the slide as an png file
            string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
            pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
            // Load the HTML file into the picture box control
            pictureBox1.ImageLocation = tempHtmlFile;
        }
        private void Next_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex < pptPresentation.Slides.Count)
            {
                slideIndex = slideIndex + 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_Load(object sender, EventArgs e)
        {
            // Load PowerPoint Presentation
            string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
            pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
        // Load PowerPoint files here
            DisplaySlide();
        }
        private void Previous_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex > 1)
            {
                slideIndex = slideIndex - 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Close the PowerPoint presentation and quit the application when the form is closing
            pptPresentation.Close();
            pptApplication.Quit();
        }
    }
}
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
    public partial class PowerPointViewer : Form
    {
        private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
        private Presentation pptPresentation;
        private string outputFolder = @"output_images";
        private int slideIndex = 1;
        public PowerPointViewer()
        {
            InitializeComponent();
        }
        private void DisplaySlide()
        {
            if (!Directory.Exists(outputFolder))
                Directory.CreateDirectory(outputFolder);
            // Export the slide as an png file
            string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
            pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
            // Load the HTML file into the picture box control
            pictureBox1.ImageLocation = tempHtmlFile;
        }
        private void Next_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex < pptPresentation.Slides.Count)
            {
                slideIndex = slideIndex + 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_Load(object sender, EventArgs e)
        {
            // Load PowerPoint Presentation
            string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
            pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
        // Load PowerPoint files here
            DisplaySlide();
        }
        private void Previous_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex > 1)
            {
                slideIndex = slideIndex - 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Close the PowerPoint presentation and quit the application when the form is closing
            pptPresentation.Close();
            pptApplication.Quit();
        }
    }
}
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.PowerPoint
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Namespace DataTableWindowsForm
	Partial Public Class PowerPointViewer
		Inherits Form

		Private pptApplication As New Microsoft.Office.Interop.PowerPoint.Application()
		Private pptPresentation As Presentation
		Private outputFolder As String = "output_images"
		Private slideIndex As Integer = 1
		Public Sub New()
			InitializeComponent()
		End Sub
		Private Sub DisplaySlide()
			If Not Directory.Exists(outputFolder) Then
				Directory.CreateDirectory(outputFolder)
			End If
			' Export the slide as an png file
			Dim tempHtmlFile As String = Path.Combine(outputFolder, "temp.png")
			pptPresentation.Slides (slideIndex).Export(tempHtmlFile, "png", 1024, 768)
			' Load the HTML file into the picture box control
			pictureBox1.ImageLocation = tempHtmlFile
		End Sub
		Private Sub Next_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim currentSlideIndex As Integer = slideIndex
			If currentSlideIndex < pptPresentation.Slides.Count Then
				slideIndex = slideIndex + 1
				DisplaySlide()
			End If
		End Sub
		Private Sub PowerPointViewercs_Load(ByVal sender As Object, ByVal e As EventArgs)
			' Load PowerPoint Presentation
			Dim pptFilePath As String = "demo.pptx" ' Path to your PowerPoint file
			pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse)
		' Load PowerPoint files here
			DisplaySlide()
		End Sub
		Private Sub Previous_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim currentSlideIndex As Integer = slideIndex
			If currentSlideIndex > 1 Then
				slideIndex = slideIndex - 1
				DisplaySlide()
			End If
		End Sub
		Private Sub PowerPointViewercs_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
			' Close the PowerPoint presentation and quit the application when the form is closing
			pptPresentation.Close()
			pptApplication.Quit()
		End Sub
	End Class
End Namespace
VB   C#

まず、必要な名前空間をインポートします。 ファイル操作はSystem.IOによって処理され、System.Windows.FormsはWinForms機能を提供します。一方で、PowerPointと連携するためのMicrosoft.OfficeクラスはPowerPointに含まれています。 PowerPointViewerApp 名前空間内で、PowerPointViewerと呼ばれる WinForms Form クラスを定義します。 ビューPPTアプリケーションの主なユーザーインターフェイスは、このフォームになります。

PowerPointアプリケーションとプレゼンテーションに関する参照は、2つのプライベートフィールド、pptApplication および pptPresentation に格納されることが発表されました。 InitializeComponentを使用することによって(), コンストラクタはデザイナーによって定義されたフォームの視覚コンポーネントを設定し、フォームを初期化します。 フォームが読み込まれると、InitializeComponent() 関数が呼び出されます。 PowerPointアプリケーション (pptApplication(プレゼンテーションアプリケーション)**) この時点で初期化され、アクセス可能になります。

次に、pptFilePathで指定されたPowerPointファイルを起動します。 pptApplication.Presentationsを使用して、パスを指定してPowerPointファイルを開きます。 (pptFilePath (pptファイルパス)) 次の内容を日本語に翻訳してください:

Openへ()関数 手続きによって開かれたプレゼンテーションを表すPresentationオブジェクトが返されます。

PowerPointプレゼンテーションの最初のスライドを表示するには、DisplaySlide を使用します。()関数 最初のスライドのインデックスは1です。PictureBoxコントロールに表示されるスライドは、この関数の結果です。 私たちは、Export()選択されたスライドをPNGファイルとしてエクスポートする関数。エクスポートされたPNGファイルは、一時的にシステムのテンポラリフォルダに保存されます。 画像位置 を使用して()メソッドでは、エクスポートされたPNGファイルをPictureBoxコントロールに読み込みます。 これらの技術はスライドの切り替えを処理します。

ナビゲーションボタン btnPrevious_ClickbtnNext_Click は、それぞれ前のスライドと次のスライドに移動します。 pptPresentationを使用して、slideIndex変数にスライドのインデックスを取得することができます。 DisplaySlideと呼びます。() 現在のスライドのインデックスが1から全スライド数までの有効範囲内にある場合、それぞれ前のスライドまたは次のスライドのインデックスとします。

フォームが閉じるとき、Close()関数が呼び出されます。 ここでは、Quit メソッドを使用してPowerPointプログラムを終了し、PowerPointアプリケーションを終了することにより、システムリソースを解放してリソース管理が正しく行われていることを確認します。()** メソッド

PowerPointファイル

C#でPowerPointファイルを表示する方法:図1 - PowerPointファイル demo.pptx

出力: PowerPoint Viewer

C#でPowerPointファイルを表示する方法: 図2 - PowerPointViewercs

IronXL

IronXLは、開発者が最新のスプレッドシート機能を備えたスプレッドシートファイル(xls、xlsx、csvなど)を生成、操作、および利用するための強力なツールです。このライブラリは、.NET、Python、Javaなどのプログラミング言語で使用できます。IronXLを活用することで、アプリケーションにおけるデータ処理や分析を効率的に行うことができます。

主な機能:

  • スプレッドシートの作成と編集:
    • 新しいスプレッドシートファイルの作成
    • 既存のスプレッドシートファイルの読み込みおよび編集
  • セル、行、および列の操作
  • データ操作:
    • データのフィルタリングおよび並べ替え
    • 数式および関数の使用
  • セルスタイルとフォーマットの設定
  • インポートおよびエクスポート:
    • csv、xls、xlsx、tsvファイルなどのインポートおよびエクスポート
    • 複数のシートのサポート

IronXLはまた、Excelのスタイルやフォーマットの設定を簡単に行える機能も提供しており、開発者がユーザーフレンドリーなスプレッドシートソリューションを作成するのを助けます。また、IronXLは信頼性の高いパフォーマンスを提供し、スプレッドシート関連の多くのタスクを迅速かつ効率的に処理します。

IronXLを使用することで、複雑なデータ操作タスクを簡単に自動化し、スプレッドシート管理の効率を大幅に向上させることができます。

C#でのExcelファイル操作は、人気のある.NET Excel Libraryを使用することで容易になります。 IronXL. その広範な機能セットにより、Excelファイルの読み取り、生成、修正に対応できる多用途ツールです。

以下に、IronXLの主要な属性について説明します:

簡単なアクセスと高速

  • IronXLを使用すると、開発者は現在のExcelファイルからデータを読み取り、新しいまたは既存のExcelファイルに迅速にデータを書き込むことができます。 これは、セル値、数式、フォーマットなどのワークブックおよびワークシートプロパティへのアクセスに関するものです。

充実したExcelサポート

  • 開発者はIronXLを使用して、データベースやCSVファイルなどのソースからExcelスプレッドシートにデータをインポートすることができます。 同様に、Excelファイルからのデータは、CSV、HTML、XML、PDFなどの多様なフォーマットにエクスポートすることができます。

柔軟性

  • IronXLを使用すると、開発者はExcelファイルからワークシートを動的に追加、変更、および削除することができます。 これは、アプリケーションの要件に応じてデータ形式と構成の柔軟性を提供します。

正確な変更

  • IronXLのおかげで、Excelスプレッドシートの個々のセルを正確に修正できます。 開発者はセルの値、数式、スタイル、フォーマット、および他の機能をプログラムで設定できます。

    詳しいドキュメントについては、以下を参照してください これ.

IronXLをインストール

続行する前に、まずインストールしましょう IronXL NuGetパッケージマネージャーコンソールを使用して:

Install-Package IronXL.Excel

IronXLはインストール後に私たちのC#プロジェクトで利用することができます。

IronXLを使用したExcel操作

では、IronXLを使用してExcelファイルからデータを読み取る仮想シナリオを見てみましょう。 これを達成するための簡単な例を以下に示します:

using IronXL;
using System;
class Program
{
    static void Main(string [] args)
    {
        // Path to the Excel file
        string excelFilePath = "sample.xlsx";
        // Load the Excel file
        WorkBook workbook = WorkBook.Load(excelFilePath);
        // Access the first worksheet
        WorkSheet worksheet = workbook.WorkSheets [0];
        // Iterate through rows and columns to read data
        foreach (var row in worksheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
using IronXL;
using System;
class Program
{
    static void Main(string [] args)
    {
        // Path to the Excel file
        string excelFilePath = "sample.xlsx";
        // Load the Excel file
        WorkBook workbook = WorkBook.Load(excelFilePath);
        // Access the first worksheet
        WorkSheet worksheet = workbook.WorkSheets [0];
        // Iterate through rows and columns to read data
        foreach (var row in worksheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronXL
Imports System
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Path to the Excel file
		Dim excelFilePath As String = "sample.xlsx"
		' Load the Excel file
		Dim workbook As WorkBook = WorkBook.Load(excelFilePath)
		' Access the first worksheet
		Dim worksheet As WorkSheet = workbook.WorkSheets (0)
		' Iterate through rows and columns to read data
		For Each row In worksheet.Rows
			For Each cell In row
				Console.Write(cell.Value & vbTab)
			Next cell
			Console.WriteLine()
		Next row
	End Sub
End Class
VB   C#

まず、必要な名前空間を追加します。 IronXL 名前空間には IronXL ライブラリによって提供されるクラスとメソッドが含まれています。 読み取りたい Excel ファイルである sample.xlsx のパスが指定されています。 WorkBookを利用して、Excelファイルが読み込まれます。 Loadによって供給されるWorkbookオブジェクト() メソッドはExcelワークブックを表します。 ワークブックの最初のワークシートには、workbook.WorkSheetsを使用してアクセスできます。 [0]**. ワークシートの行と列をネストされたfor each ループを使用して繰り返します。 各セルの値をコンソールに送信します。

C#でPowerPointファイルを表示する方法: 図3 - IronXL出力

IronXLのコード例について詳しく知りたい場合はここを参照してください これ.

結論

いくつかのソフトウェアアプリケーションは、C#を使用してPowerPointプレゼンテーションを画像に変換する必要があります。 プロセスは、Microsoft.Office.Interop.PowerPoint 名前空間が使用されるかどうかに関わらず、かなり迅速に終了する可能性があります。 この記事のコードサンプルを使えば、C#プログラムにPowerPointから画像への変換機能を簡単に組み込むことができ、情報の変更や配信のための多くの可能性が広がります。

IronXL ターゲットシステムにExcelをインストールしたり、Interopライブラリに依存したりすることなく、C#でExcel操作を実行する簡単で効率的な方法を提供します。 その包括的な機能セットとユーザーフレンドリーなAPIにより、IronXLはC#アプリケーションでExcelデータを扱う開発者にとって便利なツールです。 それは、Excelファイルの読み取り、書き込み、編集などのタスクを簡素化します。 Excel関連の開発プロジェクトでは、IronXLはデータの処理、レポートの作成、またはスプレッドシートの自動化のいずれの場合でも、生産性と柔軟性を向上させる安定したソリューションを提供します。

IronXLは、非商用利用に制限のある無料のコミュニティエディションを提供しました。 有料版は $749 から始まり、サブスクリプションまたは永続ライセンスを通じて取得することができます。 ライセンス スキーム. それらはより完全に機能し、より多くの機能やサポートを提供します。 IronXLまたは以下のライセンスを提供しています 無料試用ライセンス. ライセンスに関する包括的かつ最新の情報については、次のURLをご覧ください: ライセンスページ. こちらをご覧ください ウェブサイト Iron Software製品についてさらに詳しく知る。

次へ >
C#でテンプレートからPowerPointを作成する方法