我想编写excel表,为此我编写了一个代码,但是当我的程序在对象WritableSheet中执行时,它会收到以下警告。 我可以知道我哪里错了吗?另外,我正在使用keydriven框架来编写工作表。
Warning: Sheet name D:\eclipse-jee-kepler-SR1-win32\Workspace\AutomationFramework\configuration\GmailTestSuite.xls too long - truncating
Warning: : is not a valid character within a sheet name - replacing
Warning: \ is not a valid character within a sheet name - replacing
我用来写一张纸的代码:
public class WritableData {
Workbook wbook;
WritableWorkbook wwbCopy;
String ExecutedTestCasesSheet;
WritableSheet shSheet;
public WritableData(String testSuitePath, String string) {
// TODO Auto-generated constructor stub
try {
wbook = Workbook.getWorkbook(new File(testSuitePath));
wwbCopy = Workbook.createWorkbook(new File(testSuitePath));
// shSheet=wwbCopy.getSheet(1);
shSheet = wwbCopy.createSheet(testSuitePath, 1);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Exception message" + e.getMessage());
e.printStackTrace();
}
}
public void shSheet(String strSheetName, int iColumnNumber, int iRowNumber,
String strData) throws WriteException {
// TODO Auto-generated method stub
WritableSheet wshTemp = wwbCopy.getSheet(strSheetName);
WritableFont cellFont = null;
WritableCellFormat cellFormat = null;
if (strData.equalsIgnoreCase("PASS")) {
cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.GREEN);
cellFont.setBoldStyle(WritableFont.BOLD);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
}
else if (strData.equalsIgnoreCase("FAIL")) {
cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.RED);
cellFont.setBoldStyle(WritableFont.BOLD);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
}
else {
cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.BLACK);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
cellFormat.setWrap(true);
}
Label labTemp = new Label(iColumnNumber, iRowNumber, strData,
cellFormat);
try {
wshTemp.addCell(labTemp);
} catch (Exception e) {
e.printStackTrace();
}
}
public void closeFile() {
try {
// write the value in work book
wwbCopy.write();
// wwbCopy.close();
// Closing the original work book
wbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
首先,您应该理解术语。
工作簿 =整个Excel文档,它是文件的全部内容。
Sheet =工作簿的一部分,一个Excel" page"。工作簿可以有多个工作表。
工作表名称位于Excel文件底部的小选项卡中。传递更短更有用的内容,例如Data
。
您的代码中存在多个问题。我将讨论一些与你的问题有关的问题。
在这里打开文件/工作簿:
wbook = Workbook.getWorkbook(new File(testSuitePath));
在下一行,您创建一个具有相同名称的新工作簿 - 通过此覆盖您以前的文件,使其现在为空:
wwbCopy = Workbook.createWorkbook(new File(testSuitePath));
最后,您在这里创建一个名称不正确的新工作表:
shSheet = wwbCopy.createSheet(testSuitePath, 1);
您不应该将您的工作表命名为与您的文件相同。
顺便说一句,在Java中,您应该在文件名中使用'/'
,而不是'\'
。 Java将根据目标操作系统将所有斜杠转换为正确的字符。
关于您的异常处理,请阅读Is it really that bad to catch a general exception?或In Java, what is the difference between catch a generic exception and a specific exception (eg. IOException?)。不要抓住一般的例外。
答案 1 :(得分:0)
看起来你正在将路径传递给你的" testSuitePath"变量。请调试并确保在testSuitePath中传递正确的值。
希望有所帮助