作成日: 2024/04/24 最終更新日: 2024/04/24
文書種別
使用方法
詳細
セルスタイルを設定したとき、行数や列数が増えるに従って非常に時間がかかるようになることがあります。ここでは、同じスタイルを、個別セルごと/セル範囲/行全体に設定した場合、所要時間がどのくらい異なるかを検証します。
以下に、1000行×1000列にスタイルを設定するサンプルコードを記載します。フォームに3個のボタンを追加し、c1XLBookコントロールを配置して以下のコードを追加してください。
※行全体にスタイルを設定する場合、列数を指定することはできません。

(結果)
・個別セルごと:約3秒
・セル範囲 :約4秒
・行全体 :0秒
◎サンプルコード(VB)
以下に、1000行×1000列にスタイルを設定するサンプルコードを記載します。フォームに3個のボタンを追加し、c1XLBookコントロールを配置して以下のコードを追加してください。
※行全体にスタイルを設定する場合、列数を指定することはできません。
(結果)
・個別セルごと:約3秒
・セル範囲 :約4秒
・行全体 :0秒
◎サンプルコード(VB)
Imports C1.C1Excel
Public Class Form1
Dim sheet01 As XLSheet
Dim style01 As XLStyle
Dim range01 As XLCellRange
Dim row01 As XLRow
Dim styleOrg As XLStyle
Dim numberIJ As Integer = 1000
Dim stpw As Stopwatch
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1XLBook1.CompatibilityMode = CompatibilityMode.Excel2007 'OpenXML形式
styleOrg = New XLStyle(C1XLBook1)
styleOrg.Font = New Font("MS Pゴシック", 11, FontStyle.Regular)
styleOrg.BorderBottom = XLLineStyleEnum.Dotted
styleOrg.BorderLeft = XLLineStyleEnum.Thin
styleOrg.BorderRight = XLLineStyleEnum.Thin
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
'スタイル設定
C1XLBook1.Clear()
sheet01 = C1XLBook1.Sheets(0)
style01 = styleOrg
styleOrg.BackColor = Color.LightGoldenrodYellow
stpw = Stopwatch.StartNew() ' タイマー開始
'各セルにスタイルを設定
For i As Integer = 0 To numberIJ - 1
For j As Integer = 0 To numberIJ - 1
sheet01(i, j).Style = style01
Next
Next
'保存
C1XLBook1.Save("..\..\Test01.xlsx")
stpw.[Stop]() ' タイマー停止
MessageBox.Show("ファイルを保存しました " & vbCrLf & "スタイル設定に要した時間 : " & stpw.Elapsed.Seconds.ToString().ToString().ToString() & "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information)
Process.Start("..\..\Test01.xlsx")
End Sub
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
'スタイル設定
C1XLBook1.Clear()
sheet01 = C1XLBook1.Sheets(0)
style01 = styleOrg
styleOrg.BackColor = Color.LightSalmon
stpw = Stopwatch.StartNew() ' タイマー開始
'セル範囲にスタイルを設定
Dim range01 As XLCellRange = New XLCellRange(sheet01, 0, numberIJ, 0, numberIJ)
range01.Style = style01
'保存
C1XLBook1.Save("..\..\Test01.xlsx")
stpw.[Stop]() ' タイマー停止
MessageBox.Show("ファイルを保存しました " & vbCrLf & "スタイル設定に要した時間 : " & stpw.Elapsed.Seconds.ToString().ToString().ToString() & "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information)
Process.Start("..\..\Test01.xlsx")
End Sub
Private Sub button3_Click(sender As Object, e As EventArgs) Handles button3.Click
'スタイル設定
C1XLBook1.Clear()
sheet01 = C1XLBook1.Sheets(0)
style01 = styleOrg
styleOrg.BackColor = Color.LightSeaGreen
stpw = Stopwatch.StartNew() ' タイマー開始
'行にスタイルを設定
For i As Integer = 0 To numberIJ - 1
row01 = sheet01.Rows(i)
row01.Style = style01
Next
'保存
C1XLBook1.Save("..\..\Test01.xlsx")
stpw.[Stop]() ' タイマー停止
MessageBox.Show("ファイルを保存しました " & vbCrLf & "スタイル設定に要した時間 : " & stpw.Elapsed.Seconds.ToString().ToString().ToString() & "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information)
Process.Start("..\..\Test01.xlsx")
End Sub
End Class
◎サンプルコード(C#)
using System.Diagnostics;
using C1.C1Excel;
namespace prj_C1Excel
{
public partial class Form1 : Form
{
XLSheet sheet01;
XLStyle style01;
XLCellRange range01;
XLRow row01;
int numberIJ = 1000;
XLStyle styleOrg;
Stopwatch stpw;
public Form1()
{
InitializeComponent();
c1XLBook1.CompatibilityMode = CompatibilityMode.Excel2007; //OpenXML形式
styleOrg = new XLStyle(c1XLBook1);
styleOrg.Font = new Font("MS Pゴシック", 11, FontStyle.Regular);
styleOrg.BorderBottom = XLLineStyleEnum.Dotted;
styleOrg.BorderLeft = XLLineStyleEnum.Thin;
styleOrg.BorderRight = XLLineStyleEnum.Thin;
}
private void button1_Click(object sender, EventArgs e)
{
//スタイル設定
c1XLBook1.Clear();
sheet01 = c1XLBook1.Sheets[0];
style01 = styleOrg;
styleOrg.BackColor = Color.LightGoldenrodYellow;
stpw = Stopwatch.StartNew(); // タイマー開始
//各セルにスタイルを設定
for (int i = 0; i < numberIJ; i++)
{
for (int j = 0; j < numberIJ; j++)
{
sheet01[i, j].Style = style01;
}
}
//保存
c1XLBook1.Save(@"..\..\Test01.xlsx");
stpw.Stop(); // タイマー停止
MessageBox.Show("ファイルを保存しました \r\nスタイル設定に要した時間 : " + stpw.Elapsed.Seconds.ToString() + "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
Process.Start(@"..\..\Test01.xlsx");
}
private void button2_Click(object sender, EventArgs e)
{
//スタイル設定
c1XLBook1.Clear();
sheet01 = c1XLBook1.Sheets[0];
style01 = styleOrg;
styleOrg.BackColor = Color.LightSalmon;
stpw = Stopwatch.StartNew(); // タイマー開始
//セル範囲にスタイルを設定
range01 = new XLCellRange(sheet01, 0, numberIJ, 0, numberIJ);
range01.Style = style01;
//保存
c1XLBook1.Save(@"..\..\Test01.xlsx");
stpw.Stop(); // タイマー停止
MessageBox.Show("ファイルを保存しました \r\nスタイル設定に要した時間 : " + stpw.Elapsed.Seconds.ToString() + "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
Process.Start(@"..\..\Test01.xlsx");
}
private void button3_Click(object sender, EventArgs e)
{
//スタイル設定
c1XLBook1.Clear();
sheet01 = c1XLBook1.Sheets[0];
style01 = styleOrg;
styleOrg.BackColor = Color.LightSeaGreen;
stpw = Stopwatch.StartNew(); // タイマー開始
//行にスタイルを設定
for (int i = 0; i < numberIJ; i++)
{
row01 = sheet01.Rows[i];
row01.Style = style01;
}
//保存
c1XLBook1.Save(@"..\..\Test01.xlsx");
stpw.Stop(); // タイマー停止
MessageBox.Show("ファイルを保存しました \r\nスタイル設定に要した時間 : " + stpw.Elapsed.Seconds.ToString() + "秒", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
Process.Start(@"..\..\Test01.xlsx");
}
}
}