ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
ソフトウェア開発の分野において、豊かで魅力的なユーザーエクスペリエンスを提供するためには、多くのメディア種類をプログラムに組み込む能力が必要です。 Microsoft Office PowerPointのプレゼンテーションは情報を伝達するために頻繁に使用されるため、C# WinFormsプログラムにPowerPointビューアコントロールを組み込むことは有利です。 この記事では、そのような種類の制御を統合し、開発者がアプリにPowerPoint閲覧機能を追加して改良する方法について説明します。 この記事では、MS PowerPoint ViewerをインストールせずにC# PowerPoint Viewerを作成します。
PowerPointアプリケーションインスタンスを作成します。
プロジェクトにInterop参照を追加する
インスタンスを使用してプレゼンテーションを開く。
エクスポートファイルの出力フォルダーを確認して作成します。
スライド画像をPictureボックスに読み込む。 ボタンを使用してスライドを移動します。
PowerPointプレゼンテーションは、教育やビジネスを含むさまざまな分野で広く使用されています。 WinFormsアプリケーションにPowerPointビューアーコントロールを組み込むことにはいくつかの利点があります。
最初に必要なアセンブリの参照を追加します: プロジェクトに 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
まず、必要な名前空間をインポートします。 ファイル操作は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_Click と btnNext_Click は、それぞれ前のスライドと次のスライドに移動します。 pptPresentationを使用して、slideIndex変数にスライドのインデックスを取得することができます。 DisplaySlideと呼びます。() 現在のスライドのインデックスが1から全スライド数までの有効範囲内にある場合、それぞれ前のスライドまたは次のスライドのインデックスとします。
フォームが閉じるとき、Close()関数が呼び出されます。 ここでは、Quit メソッドを使用してPowerPointプログラムを終了し、PowerPointアプリケーションを終了することにより、システムリソースを解放してリソース管理が正しく行われていることを確認します。()** メソッド
IronXLは、開発者が最新のスプレッドシート機能を備えたスプレッドシートファイル(xls、xlsx、csvなど)を生成、操作、および利用するための強力なツールです。このライブラリは、.NET、Python、Javaなどのプログラミング言語で使用できます。IronXLを活用することで、アプリケーションにおけるデータ処理や分析を効率的に行うことができます。
主な機能:
IronXLはまた、Excelのスタイルやフォーマットの設定を簡単に行える機能も提供しており、開発者がユーザーフレンドリーなスプレッドシートソリューションを作成するのを助けます。また、IronXLは信頼性の高いパフォーマンスを提供し、スプレッドシート関連の多くのタスクを迅速かつ効率的に処理します。
IronXLを使用することで、複雑なデータ操作タスクを簡単に自動化し、スプレッドシート管理の効率を大幅に向上させることができます。
C#でのExcelファイル操作は、人気のある.NET Excel Libraryを使用することで容易になります。 IronXL. その広範な機能セットにより、Excelファイルの読み取り、生成、修正に対応できる多用途ツールです。
以下に、IronXLの主要な属性について説明します:
IronXLのおかげで、Excelスプレッドシートの個々のセルを正確に修正できます。 開発者はセルの値、数式、スタイル、フォーマット、および他の機能をプログラムで設定できます。
詳しいドキュメントについては、以下を参照してください これ.
続行する前に、まずインストールしましょう IronXL NuGetパッケージマネージャーコンソールを使用して:
Install-Package IronXL.Excel
IronXLはインストール後に私たちのC#プロジェクトで利用することができます。
では、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
まず、必要な名前空間を追加します。 IronXL 名前空間には IronXL ライブラリによって提供されるクラスとメソッドが含まれています。 読み取りたい Excel ファイルである sample.xlsx のパスが指定されています。 WorkBookを利用して、Excelファイルが読み込まれます。 Loadによって供給されるWorkbookオブジェクト() メソッドはExcelワークブックを表します。 ワークブックの最初のワークシートには、workbook.WorkSheetsを使用してアクセスできます。 [0]**. ワークシートの行と列をネストされたfor each ループを使用して繰り返します。 各セルの値をコンソールに送信します。
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製品についてさらに詳しく知る。
9つの .NET API製品 オフィス文書用