java 设置sheet名称_关于java:无法使用JXL编写Excel文档(“工作表名称太长 – 截断”)...

我想编写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();

}

}

}

首先,您应该了解术语。

Workbook =整个Excel文档,它是文件的全部内容。

Sheet =工作簿的一部分,一个Excel"页面"。工作簿可以有多个工作表。

工作表名称位于Excel文件底部的小选项卡中。传递更短更有用的东西,例如Data。

2cf91cbe3ed4daa049573a22f8b2e682.png

您的代码中存在多个问题。我将讨论一些与您的问题相关的问题。

在这里打开文件/工作簿:

wbook = Workbook.getWorkbook(new File(testSuitePath));

在下一行,您将创建一个具有相同名称的新工作簿 - 这样您将覆盖以前的文件,使其现在为空:

wwbCopy = Workbook.createWorkbook(new File(testSuitePath));

最后,在这里创建一个名称不正确的新工作表:

shSheet = wwbCopy.createSheet(testSuitePath, 1);

您不应将您的工作表命名为与文件相同的名称。

顺便说一句,在Java中,你应该在文件名中使用'/',而不是'\'。 Java将根据目标操作系统将所有斜杠转换为正确的字符。

至于你的异常处理,请阅读捕获一般异常真的那么糟糕吗?或者在Java中,捕获泛型异常和特定异常(例如IOException?)之间的区别是什么。不要抓住一般例外。

感谢您的回复,实际上在createSheet中需要createSheet(String,int.arg1)。那么,我们怎样才能像你告诉的那样传递工作表名称?

尝试createSheet("data",1):-)假设数字表示工作簿中的工作表索引,检查它是从0开始还是从1开始。

通过你的最后一条评论我没有得到那个警告,但现在发生了什么,我已经给出了我必须写的表格名称,如你所说的"数据"。但是当我执行一个程序时,它会删除它包含的所有其他工作簿,只创建一个。为什么会这样?

看我编辑的答案。

能告诉我如何用现有的表格写信吗?实际上我正在尝试设置已执行测试用例的状态,但每当我执行这些案例时,它都会创建新的工作簿。我读了你的可编辑内容,但是不明白我怎么能用表写? :(

我编辑了我的答案,所以回答你上一个问题的文字现在是粗体。你不能在StackOverflow上钓鱼,而是钓鱼竿。

看起来您正在将路径传递到"testSuitePath"变量中的excel文件。请调试并确保在testSuitePath中传递正确的值。

希望能帮助到你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值