2009年9月14日月曜日

groovyとSQL Serverでデータベース一覧を表示する

groovyとSQL Serverでデータベース一覧を表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:sqlserver://localhost;databaseName=master",
"sa",
"sa",
"com.microsoft.sqlserver.jdbc.SQLServerDriver")

sql.eachRow("select * from sys.databases") {
// データベース名
println "name:${it.name}"
// データベースID
println "database_id:${it.database_id}"
// 作成日
println "create_date:${it.create_date}"
// データベース状態の説明
println "state_desc:${it.state_desc}"
println "----"
}


実行結果

name:master
database_id:1
create_date:2003-04-08 09:13:36.39
state_desc:ONLINE
----
name:tempdb
database_id:2
create_date:2009-08-09 23:39:24.29
state_desc:ONLINE
----
name:model
database_id:3
create_date:2003-04-08 09:13:36.39
state_desc:ONLINE
----
name:msdb
database_id:4
create_date:2008-07-09 16:46:27.767
state_desc:ONLINE
----
name:test1
database_id:5
create_date:2009-08-09 23:10:04.197
state_desc:ONLINE
----


動作環境
Groovy 1.6.3, JDK6 Update14, SQL Server JDBC Driver 2.0,
SQL Server 2008 Express

関連情報
sys.databases
http://msdn.microsoft.com/ja-jp/library/ms178534.aspx

WSHでODBCによる同様の処理を行うには、以下のコードを実行します。

cs = "Driver={SQL Server};Server=SQLSRV\SQLEXPRESS;Uid=sa;Pwd=sa;Database=master"
set conn = CreateObject("ADODB.Connection")
on error resume next
conn.open cs
if err.number <> 0 then
WScript.StdOut.WriteLine err.description
WScript.Quit
end if
set rs = conn.execute("select * from sys.databases")
if err.number <> 0 then
WScript.StdOut.WriteLine err.description
conn.close
WScript.Quit
end if
Do While Not rs.EOF
' データベース名
WScript.StdOut.WriteLine rs.Fields("name").value
rs.Movenext
Loop
conn.close
on error goto 0

2009年9月13日日曜日

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枚目のシートのセル範囲B1:C1のセルを結合
wb.sheets(1).Range("B1:C1").MergeCells = true

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


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


実行結果
ScriptomとExcelでセルを結合した結果

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Range("B1:C1").MergeCells = true
wb.saveAs(sh.CurrentDirectory + "\test19b.xls")
wb.close


関連情報

2009年9月12日土曜日

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枚目のシートのセル範囲A3の文字列を設定
wb.sheets(1).Range("A3").value = "groovyあれこれ"
// 1枚目のシートのセル範囲A3に折り返して全体を表示するように設定
wb.sheets(1).Range("A3").WrapText = true
// 1枚目のシートのセル範囲3行目の高さを自動調整
wb.sheets(1).Rows("3").AutoFit()

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


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


実行結果
ScriptomとExcelでセルの表示を折り返すように設定した結果

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Range("A3").value = "groovyあれこれ"
wb.sheets(1).Range("A3").WrapText = true
wb.sheets(1).Rows("3").AutoFit
wb.saveAs(sh.CurrentDirectory + "\test18b.xls")
wb.close


関連情報

2009年9月11日金曜日

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枚目のシートのセル範囲A3の文字列を設定
wb.sheets(1).Range("A3").value = "groovyあれこれ"
// 1枚目のシートのセル範囲A列の幅を自動調整
wb.sheets(1).Columns("A").AutoFit()

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


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


実行結果
ScriptomとExcelで列の幅を自動調整した結果

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Range("A3").value = "groovyあれこれ"
wb.sheets(1).Columns("A").AutoFit
wb.saveAs(sh.CurrentDirectory + "\test17b.xls")
wb.close


関連情報

2009年9月10日木曜日

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枚目のシートのセル範囲D列の幅を40文字に設定
wb.sheets(1).Columns("D").ColumnWidth = 40

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


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


実行結果
ScriptomとExcelで列の幅を設定する

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Columns("D").ColumnWidth = 40
wb.saveAs(sh.CurrentDirectory + "\test16b.xls")
wb.close


関連情報

2009年9月9日水曜日

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枚目のシートのセル範囲3行目の高さを40ポイントに設定
wb.sheets(1).Rows("3").RowHeight = 40

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


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


実行結果
ScriptomとExcelで行の高さを設定した結果

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Rows("3").RowHeight = 40
wb.saveAs(sh.CurrentDirectory + "\test15b.xls")
wb.close


関連情報

2009年9月8日火曜日

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枚目のシートのセル範囲D列の背景色を設定(BGR)
wb.sheets(1).Columns("D").interior.color = 0xff9977

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


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


出力結果
ScriptomとExcelで列の背景色を設定した結果

動作環境
groovy 1.6.3/JDK6 Update14/Excel 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).Columns("D").interior.color = RGB(119, 153, 255)
wb.saveAs(sh.CurrentDirectory + "\test14b.xls")
wb.close


関連情報