如何使用 groovy 编辑现有 excel sheet,而不创建相同 excel 的副本
How to edit the existing excel sheet using groovy, without creating a copy of the same excel
想要使用 groovy 编辑现有 excel sheet,而不创建相同 excel 的副本
想要在获取数据的同一个 excel 中更新结果,只有输出应该写入不同的单元格。
我是 Soap 新手 UI。
请找到下面的代码
import java.io.*
import jxl.*
import jxl.write.*
// Read data from excel
def f=new File("D:\Soap.xls");
def wk= Workbook.getWorkbook(f)
def ws=wk.getSheet("Sheet1")
def count = ws.getRows()
for (int i=1;i<count;i++) {
Cell c1=ws.getCell(0,i)
A=Integer.parseInt(c1.getContents())
Cell c2=ws.getCell(1,i)
B=Integer.parseInt(c2.getContents())
sum = A+B
log.info sum
//---------For Writing the data--------------
WritableWorkbook workbook1 = Workbook.getWorkbook(f)
WritableSheet sheet1 = workbook1.getSheet("Sheet1")
log.info(sheet1.isHidden())
Label label = new Label(3,i,"Addition")
sheet1.addCell(label)
log.info label
workbook1.write()
}
您可以先从 excel 工作簿读取数据,然后在完成读取操作后执行写入相关任务,如下所示:
import com.eviware.soapui.support.XmlHolder
import java.io.File
import java.io.IOException
import jxl.*
import jxl.read.biff.BiffException
import jxl.write.*
import jxl.write.Label
log.info("Testing Started")
def reqOperationName = "someservice"
def inputDataFileName = "D:/sample/temp6.xls"
def inputDataSheetName = "Sheet1"
Workbook workbook = Workbook.getWorkbook(new File(inputDataFileName))
Sheet sheet1 = workbook.getSheet(inputDataSheetName)
def responsesCount = 0
String[] Responses = null
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Request")
try{
rowcount = sheet1.getRows()
colcount = sheet1.getColumns()
Responses = new String[rowcount-1]
responsesCount = rowcount-1
for(Row in 1..rowcount-1){
String reqTagName = sheet1.getCell(0,0).getContents()
log.info reqTagName
def TagCount = reqholder["count(//*:"+reqTagName+")"]
if(TagCount!=0){
String reqTagValue = sheet1.getCell(0,Row).getContents()
reqholder.setNodeValue("//*:"+reqTagName, reqTagValue)
reqholder.updateProperty()
}
//test the request
testRunner.runTestStepByName(reqOperationName)
reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Response")
Responses[Row-1] = reqholder.getPrettyXml().toString()
log.info Responses[Row-1]
}
}
catch (Exception e) {log.info(e)}
finally{
workbook.close()
}
Workbook existingWorkbook = Workbook.getWorkbook(new File(inputDataFileName));
WritableWorkbook workbookCopy = Workbook.createWorkbook(new File(inputDataFileName), existingWorkbook);
try
{
WritableSheet sheetToEdit = workbookCopy.getSheet("Sheet1");
WritableCell cell;
for (int i =0;i<Responses.size();i++)
{
def resholder = groovyUtils.getXmlHolder(Responses[i])
resTagValue1= resholder.getNodeValue("//*:phoneNumber")
Label l = new Label(3, i, resTagValue1.toString());
cell = (WritableCell) l;
sheetToEdit.addCell(cell);
}
}
catch (Exception e) {log.info(e)}
finally{
workbookCopy.write();
workbookCopy.close();
existingWorkbook.close();
}
log.info("Testing Over")
想要使用 groovy 编辑现有 excel sheet,而不创建相同 excel 的副本 想要在获取数据的同一个 excel 中更新结果,只有输出应该写入不同的单元格。
我是 Soap 新手 UI。
请找到下面的代码
import java.io.*
import jxl.*
import jxl.write.*
// Read data from excel
def f=new File("D:\Soap.xls");
def wk= Workbook.getWorkbook(f)
def ws=wk.getSheet("Sheet1")
def count = ws.getRows()
for (int i=1;i<count;i++) {
Cell c1=ws.getCell(0,i)
A=Integer.parseInt(c1.getContents())
Cell c2=ws.getCell(1,i)
B=Integer.parseInt(c2.getContents())
sum = A+B
log.info sum
//---------For Writing the data--------------
WritableWorkbook workbook1 = Workbook.getWorkbook(f)
WritableSheet sheet1 = workbook1.getSheet("Sheet1")
log.info(sheet1.isHidden())
Label label = new Label(3,i,"Addition")
sheet1.addCell(label)
log.info label
workbook1.write()
}
您可以先从 excel 工作簿读取数据,然后在完成读取操作后执行写入相关任务,如下所示:
import com.eviware.soapui.support.XmlHolder
import java.io.File
import java.io.IOException
import jxl.*
import jxl.read.biff.BiffException
import jxl.write.*
import jxl.write.Label
log.info("Testing Started")
def reqOperationName = "someservice"
def inputDataFileName = "D:/sample/temp6.xls"
def inputDataSheetName = "Sheet1"
Workbook workbook = Workbook.getWorkbook(new File(inputDataFileName))
Sheet sheet1 = workbook.getSheet(inputDataSheetName)
def responsesCount = 0
String[] Responses = null
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Request")
try{
rowcount = sheet1.getRows()
colcount = sheet1.getColumns()
Responses = new String[rowcount-1]
responsesCount = rowcount-1
for(Row in 1..rowcount-1){
String reqTagName = sheet1.getCell(0,0).getContents()
log.info reqTagName
def TagCount = reqholder["count(//*:"+reqTagName+")"]
if(TagCount!=0){
String reqTagValue = sheet1.getCell(0,Row).getContents()
reqholder.setNodeValue("//*:"+reqTagName, reqTagValue)
reqholder.updateProperty()
}
//test the request
testRunner.runTestStepByName(reqOperationName)
reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Response")
Responses[Row-1] = reqholder.getPrettyXml().toString()
log.info Responses[Row-1]
}
}
catch (Exception e) {log.info(e)}
finally{
workbook.close()
}
Workbook existingWorkbook = Workbook.getWorkbook(new File(inputDataFileName));
WritableWorkbook workbookCopy = Workbook.createWorkbook(new File(inputDataFileName), existingWorkbook);
try
{
WritableSheet sheetToEdit = workbookCopy.getSheet("Sheet1");
WritableCell cell;
for (int i =0;i<Responses.size();i++)
{
def resholder = groovyUtils.getXmlHolder(Responses[i])
resTagValue1= resholder.getNodeValue("//*:phoneNumber")
Label l = new Label(3, i, resTagValue1.toString());
cell = (WritableCell) l;
sheetToEdit.addCell(cell);
}
}
catch (Exception e) {log.info(e)}
finally{
workbookCopy.write();
workbookCopy.close();
existingWorkbook.close();
}
log.info("Testing Over")