如何使用Groovy编写Excel文件的脚本

我想在Groovy中创buildexcel文件,然后绘制它们。 此代码是使用Microsoft的Shell脚本语言从示例中获取的:

Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Add() Set objWorksheet = objWorkbook.Worksheets(1) objWorksheet.Cells(1,1) = "Operating System" objWorksheet.Cells(2,1) = "Windows Server 2003" objWorksheet.Cells(3,1) = "Windows XP" objWorksheet.Cells(5,1) = "Windows NT 4.0" objWorksheet.Cells(6,1) = "Other" objWorksheet.Cells(1,2) = "Number of Computers" objWorksheet.Cells(2,2) = 145 objWorksheet.Cells(3,2) = 987 objWorksheet.Cells(4,2) = 611 objWorksheet.Cells(5,2) = 41 objWorksheet.Cells(6,2) = 56 Set objRange = objWorksheet.UsedRange objRange.Select Set colCharts = objExcel.Charts colCharts.Add() Set objChart = colCharts(1) objChart.Activate objChart.HasLegend = FALSE objChart.ChartTitle.Text = "Operating System Use" 

我如何修改这个在Groovy中工作?

你需要groovy与COM一起工作。 朝这个页面的底部是一个自动化Excel的例子。

EDITS

这是你的例子翻译成Groovy(我在Groovy 1.8.2下运行):

 import org.codehaus.groovy.scriptom.* import org.codehaus.groovy.scriptom.tlb.office.excel.XlChartType import org.codehaus.groovy.scriptom.tlb.office.excel.XlRowCol import org.codehaus.groovy.scriptom.tlb.office.excel.XlChartLocation // create a xls instance def xls = new ActiveXObject("Excel.Application") xls.Visible = true Thread.sleep(1000) // get the workbooks object def workbooks = xls.Workbooks // add a new workbook def workbook = workbooks.Add() // select the active sheet def sheet = workbook.ActiveSheet cell = sheet.Range("A1") cell.Value = "Operating System" cell = sheet.Range("A2") cell.Value = "Windows Server 2003" cell = sheet.Range("A3") cell.Value = "Windows XP" cell = sheet.Range("A4") cell.Value = "Windows NT 4.0" cell = sheet.Range("A5") cell.Value = "Other" cell = sheet.Range("B1") cell.Value = "Number of Computers" cell = sheet.Range("B2") cell.Value = 145 cell = sheet.Range("B3") cell.Value = 987 cell = sheet.Range("B4") cell.Value = 611 cell = sheet.Range("B5") cell.Value = 41 def chart = workbook.Charts.Add(Scriptom.MISSING, sheet) // create chart object chart.ChartType = XlChartType.xl3DArea // set type to pie chart.SetSourceData(sheet.Range("A1:B5"), XlRowCol.xlColumns) // set source data chart.Location(XlChartLocation.xlLocationAsNewSheet) // add chart as new sheet 

另一种select可能是Apache POI ,这取决于你实际需要的东西。

任何一个选项对于初学者来说都会很复杂; 简单的path是使用shell。

马克上面的回答是一个很好的例子。 如果您进行一些简单的更改,则事件更易于遵循:

 import org.codehaus.groovy.scriptom.* import org.codehaus.groovy.scriptom.tlb.office.excel.* def xls = new ActiveXObject("Excel.Application") xls.Visible = true Thread.sleep(1000) // add a new workbook def workbook = xls.Workbooks.Add() // select the active sheet def sheet = workbook.ActiveSheet sheet.Range("A1").Value = "Operating System" sheet.Range("A2").Value = "Windows Server 2003" sheet.Range("A3").Value = "Windows XP" sheet.Range("A4").Value = "Windows NT 4.0" sheet.Range("A5").Value = "Other" sheet.Range("B1").Value = "Number of Computers" sheet.Range("B2").Value = 145 sheet.Range("B3").Value = 987 sheet.Range("B4").Value = 611 sheet.Range("B5").Value = 41 def chart = workbook.Charts.Add(Scriptom.MISSING, sheet) // create chart object chart.ChartType = XlChartType.xl3DArea // set type to pie chart.SetSourceData(sheet.Range("A1:B5"), XlRowCol.xlColumns) // set source data chart.Location(XlChartLocation.xlLocationAsNewSheet) // add chart as new sheet 

我也会去Apache POI 。 繁忙的开发人员指南中提供了一个工作示例。 还有GSheets ,一个用于Apache POI的精简Groovy包装,请参阅博客文章和unit testing以获取示例用法。

可能最简单(就外部代码而言)是文本格式,单元格由'\ t'和行“\ r \ n”分隔。 小心有意义string,但有数字字符(或类似date)的单元格,最好预先用单撇号

这种格式可以通过剪贴板粘贴或从文件菜单打开。