2009年7月31日金曜日

ScriptomとExcelでセルのフォントを設定する

ScriptomとExcelでセルのフォントを設定するには、FontのNameプロパティを設定します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートのA1のフォントを変更
wb.sheets(1).Cells(1, 1).Font.Name = "Tahoma"

wb.saveAs(new File("test7a.xls").canonicalPath)
wb.close
}


サンプルExcelブック(test1.xls)


セルのフォントを設定した結果(test7a.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")
wb.sheets(1).Cells(1, 1).Font.Name = "Tahoma"
wb.saveAs(sh.CurrentDirectory + "\test7b.xls")
wb.close


関連情報

2009年7月30日木曜日

ScriptomとExcelでシートのヘッダとフッタを設定する

ScriptomとExcelでシートのヘッダとフッタを設定するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートのヘッダーとフッターを設定
wb.sheets(1).PageSetup.LeftHeader = "左上"
wb.sheets(1).PageSetup.CenterHeader = "中央上"
wb.sheets(1).PageSetup.RightHeader = "右上"
wb.sheets(1).PageSetup.LeftFooter = "左下"
// 中央下にページ番号
wb.sheets(1).PageSetup.CenterFooter = "&P"
wb.sheets(1).PageSetup.RightFooter = "右下"

wb.saveAs(new File("test6a.xls").canonicalPath)
wb.close
}


サンプルExcelブック(test1.xls)


ヘッダとフッタを設定した結果(test6a.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")
With wb.sheets(1).PageSetup
.LeftHeader = "左上"
.CenterHeader = "中央上"
.RightHeader = "右上"
.LeftFooter = "左下"
' 中央下にページ番号
.CenterFooter = "&P"
.RightFooter = "右下"
End With
wb.saveAs(sh.CurrentDirectory + "\test6b.xls")
wb.close


関連情報

2009年7月29日水曜日

ScriptomとExcelでセルの背景色を設定する

ScriptomとExcelでセルの背景色を設定するには、以下のコードのようにInteriorのcolorプロパティを設定します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートのA1の背景色を設定(BGR順)
wb.sheets(1).cells(1, 1).interior.color = 0xffddbb
wb.saveAs(new File("test5a.xls").canonicalPath)
wb.close
}


サンプルExcelブック(test1.xls)


セルA1の背景色を設定した結果(test5a.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")
wb.sheets(1).cells(1, 1).interior.color = RGB(187, 221, 255)
wb.saveAs(sh.CurrentDirectory + "\test5b.xls")

wb.close


関連情報

2009年7月28日火曜日

ScriptomとExcelでセルの値を表示する

ScriptomとExcelでセルの値を表示するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートのA1からC2までの値を表示
for(rows in 1..2){
for(cols in 1..3){
println(wb.sheets(1).cells(rows, cols).Value2)
}
}
wb.close
}


サンプルExcelブック(test1.xls)


セルの値を表示した結果
C:\share\excel>groovy ScriptomExcel6.groovy
Sample
サンプル
null
123.0
45.6
0.078

動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

for rows = 1 to 2
for cols = 1 to 3
WScript.StdOut.WriteLine wb.sheets(1).cells(rows, cols).Value2
next
next
wb.close


関連情報

2009年7月27日月曜日

ScriptomとExcelでワークシートをコピーする

ScriptomとExcelでワークシートをコピーするには、以下のコードのようにCopyメソッドを使用します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートをブックのシートの最初にコピー
wb.sheets(1).copy(wb.sheets(1))

wb.saveAs(new File("test4a.xls").canonicalPath)
wb.close


wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートをブックのシートの一番後にコピー
wb.sheets(1).copy(Scriptom.MISSING, wb.sheets(wb.sheets.count))

wb.saveAs(new File("test4b.xls").canonicalPath)
wb.close

}


サンプルExcelブック(test1.xls)


1枚目のシートをブックのシートの最初にコピーした結果(test4a.xls)


1枚目のシートをブックのシートの一番後にコピーした結果(test4b.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

' 1枚目のシートをブックのシートの最初にコピー
wb.sheets(1).copy(wb.sheets(1))
wb.saveAs(sh.CurrentDirectory + "\test4c.xls")

wb.close


' 1枚目のシートをブックのシートの一番後にコピー
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

wb.sheets(1).copy ,wb.sheets(wb.sheets.count)
wb.saveAs(sh.CurrentDirectory + "\test4d.xls")

wb.close


関連情報

ScriptomとExcelでワークシートを削除する

ScriptomとExcelでワークシートを削除するには、以下のコードのようにdeleteメソッドを使用します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 2枚目のシートを削除
wb.sheets(2).delete()

wb.saveAs(new File("test2a.xls").canonicalPath)
wb.close
}


サンプルExcelブック(test1.xls)


シートを削除した結果(test2a.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false
' 指定したシートを削除
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

wb.sheets(2).delete
wb.saveAs(sh.CurrentDirectory + "\test2b.xls")

wb.close


関連情報

2009年7月26日日曜日

ScriptomとExcelでワークシートを移動する

ScriptomとExcelでワークシートを移動するには、以下のコードのようにMoveメソッドを使用します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートを3枚目のシートの前に移動
wb.sheets(1).move(wb.sheets(3))

wb.saveAs(new File("test3a.xls").canonicalPath)
wb.close


wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

ea.DisplayAlerts = false

// 1枚目のシートをブックのシートの一番後に移動
wb.sheets(1).move(Scriptom.MISSING, wb.sheets(wb.sheets.count))

wb.saveAs(new File("test3b.xls").canonicalPath)
wb.close

}


サンプルExcelブック(test1.xls)


1枚目のシートを(元の)3枚目のシートの前に移動させた結果(test3a.xls)


1枚目のシートをブックの最後に移動させた結果(test3b.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

xa.DisplayAlerts = false

Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

' 1枚目のシートを3枚目のシートの前に移動
wb.sheets(1).move(wb.sheets(3))
wb.saveAs(sh.CurrentDirectory + "\test3c.xls")

wb.close


' ブックの最後に移動
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

wb.sheets(1).move ,wb.sheets(wb.sheets.count)
wb.saveAs(sh.CurrentDirectory + "\test3d.xls")

wb.close


関連情報

ScriptomとExcelでワークシートを追加する

ScriptomとExcelでワークシートを追加するには、以下のコードのようにaddメソッドを使用します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")

wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

// 上書き確認メッセージボックスを出さないようにする
ea.DisplayAlerts = false

// 1枚目のシートの前に新規ワークシート追加
ws = wb.sheets.add(wb.sheets(1))
ws.name = "前追加"

wb.saveAs(new File("test1a.xls").canonicalPath)
wb.close


wb = ea.workbooks.open(new File("test1.xls").canonicalPath)

// 2枚目のシートの後に新規ワークシート追加
ws = wb.sheets.add(Scriptom.MISSING, wb.sheets(2))
ws.name = "後追加"

wb.saveAs(new File("test1b.xls").canonicalPath)
wb.close

}


サンプルExcelブック(test1.xls)


シートを一番最初に追加した結果(test1a.xls)


2枚目のシートの後に新規ワークシートを追加した結果(test1b.xls)


動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")

' 上書き確認メッセージボックスを出さないようにする
xa.DisplayAlerts = false
' 指定したシートの前に追加
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

Set ws = wb.worksheets.add(wb.sheets(1))
ws.name = "前追加"
wb.saveAs(sh.CurrentDirectory + "\test1c.xls")

wb.close

' 指定したシートの後に追加
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")

Set ws = wb.worksheets.add(,wb.sheets(2))
ws.name = "後追加"
wb.saveAs(sh.CurrentDirectory + "\test1d.xls")

wb.close


関連情報

2009年7月25日土曜日

ScriptomとExcelでワークシートの情報を表示する

ScriptomとExcelでワークシートの情報を表示するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*;
import org.codehaus.groovy.scriptom.tlb.office.excel.*;

Scriptom.inApartment
{
ea = new ActiveXObject("Excel.Application")
wb = ea.workbooks.open(new File("test1.xls").canonicalPath)
// 最初のシート名の表示
println(wb.sheets(1).name)

// シートの個数
println(wb.sheets.count)

// 各シート名の列挙
for(es in wb.sheets){
println(es.name)
}
wb.close
}


サンプルエクセルファイル(test1.xls)

上図のような「テスト1」、「Sheet2」、「Sheet3」という名称のシートを含む
エクセルファイルを用意して実行すると、以下のように実行結果が表示されます。

C:\share\excel\>groovy ScriptomExcel1.groovy
テスト1
3
テスト1
Sheet2
Sheet3

動作環境
JDK 1.6 Update14, groovy1.6.3, Microsoft Office 2007

WSHで同様の処理を行うには、以下のスクリプトを実行します。

Set sh = CreateObject("WScript.Shell")
Set xa = CreateObject("Excel.Application")
Set wb = xa.workbooks.open(sh.CurrentDirectory + "\test1.xls")
' 最初のシート名の表示
WScript.StdOut.WriteLine wb.sheets(1).name
' シートの個数
WScript.StdOut.WriteLine wb.sheets.count
' 各シート名の列挙
for each es in wb.sheets
WScript.StdOut.WriteLine es.name
next
wb.close


関連情報