我想这里的问题在for循环,如果有人能帮助它,它将非常感谢。谢了。
这是我的代码:-...
@CheckMethodAuthority("PFV2300&limt_print")
public static void importExcel(Upload upload_data) throws IOException,
NoSuchFieldException, SecurityException, IllegalArgumentException,
IllegalAccessException,
ParseException {
String fileName = upload_data.getFileName();
logger.info("H1:" + fileName);
final int expectedSheetIndex = 0; //
Sheet sheet = ExcelUtil.openWorkSheet(new ByteArrayInputStream(upload_data.asBytes()), fileName, expectedSheetIndex);
SYS4000 account = (SYS4000)renderArgs.get("account");
StringBuffer fileUploadErrorMsg = new StringBuffer();
final int expectedTitleRowNum = 1; //
List<POS20083> pos20083List = readAllCellsOfSheet(sheet, expectedTitleRowNum, account.user_no, fileUploadErrorMsg);
int addItem =0;
int upItem =0;
int failItem =0;
File filePath = new File("D:\\play framework workspace\\Coupon_Platform\\public\\sample\\excel\\PFV2300-sample.xlsx");
InputStream file = new FileInputStream(filePath);
XSSFWorkbook WB = new XSSFWorkbook(file);
sheet = WB.getSheetAt(0);
for (POS20083 POS20083: pos20083List)
{
for (int i=0; i<=pos20083List.size(); i++)
{
Row row = sheet.getRow(i);
Cell cell_store_no= (sheet.getRow(i).getCell(0));
Cell cell_control_qty = (sheet.getRow(i).getCell(1));
Cell cell_error_msg = sheet.getRow(i).getCell(2);
sheet.autoSizeColumn(2);
for (int j=0; j<=sheet.getFirstRowNum(); j++)
{
if (row == null)
{
row = sheet.createRow(i);
continue;
}
if (cell_error_msg == null)
{
cell_error_msg = sheet.getRow(i).createCell(2);
continue;
}
if (row.getRowNum()==0)
{
continue;
}
POS20083 pos20083 = POS20083.find("merchant_no= ? and store_no= ?",POS20083.merchant_no, POS20083.store_no).first();
String sql = insert into pos20083 (pos20081_id, merchant_no, store_no, control_qty, id)select 60, ?1, ?2, ?3, pos20083_seq.nextval from dual;
String sql2 = " Select count(store_no) from twc_store"
+ " Where exists (select store_no"
+ " from pos20083"
+ " where twc_store.store_no = ?4)";
String sql3 = " Select count(store_no) from pos20083"
+ " Where exists (select store_no"
+ " from twc_store"
+ " where pos20083.store_no = ?5)";
EntityManager entityManager = JPA.em();
EntityTransaction transaction = JPA.em().getTransaction();
Query query = entityManager.createNativeQuery(sql);
Query query2 = entityManager.createNativeQuery(sql2);
Query query3 = entityManager.createNativeQuery(sql3);
query2.setParameter(4, POS20083.store_no);
query3.setParameter(5, POS20083.store_no);
if (!transaction.isActive())
{
transaction.begin();
}
int insertCount2 = query2.executeUpdate();
int insertCount3 = query3.executeUpdate();
int storeCounts = ObjectUtil.getInteger(query2.getSingleResult());
int storeCounts_pos20083 = ObjectUtil.getInteger(query3.getSingleResult());
if (storeCounts == 0 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) >0)
{
cell_error_msg.setCellValue("Store Number ID doesn't exists in [twc_store]");
sheet.autoSizeColumn(2);
}
if (storeCounts == 0 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) <=0)
{
cell_error_msg.setCellValue("Store Number ID doesn't exists in [twc_store] and and control Quantity coudn't be less or equal ZERO");
sheet.autoSizeColumn(2);
}
if (storeCounts == 1 && storeCounts_pos20083 ==0 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) > 0)
{
query.setParameter(1, POS20083.merchant_no);
query.setParameter(2, POS20083.store_no);
query.setParameter(3, POS20083.control_qty);
int insertCount = query.executeUpdate();
addItem++;
cell_error_msg.setCellValue(" ");
sheet.autoSizeColumn(2);
}
if (transaction.isActive())
{
transaction.commit();
}
file.close();
if (storeCounts == 1 && storeCounts_pos20083 ==0 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) <=0)
{
cell_error_msg.setCellValue("control Quantity coudnot be less or equal ZERO");
sheet.autoSizeColumn(2);
//failItem++;
//file.close();
}
if (storeCounts == 1 && storeCounts_pos20083 ==1 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) <=0)
{
cell_error_msg.setCellValue("Store Number ID already exists and control Quantity coudn't be less or equal ZERO");
sheet.autoSizeColumn(2);
}
if (storeCounts == 1 && storeCounts_pos20083 ==1 && ObjectUtil.getInteger(cell_control_qty.getNumericCellValue()) > 0)
{
cell_error_msg.setCellValue("Store Number ID already exists");
sheet.autoSizeColumn(2);
}
}
}
failItem++;
}
file.close();
FileOutputStream fileout = new FileOutputStream(filePath);
WB.write(fileout);
fileout.flush();
fileout.close();
我已经发现了漏洞并修复了它
有三个循环
1-for(POS20083 POS20083:pos20083List)2-for(int i=0;i<=pos20083List.size();i++)3-for(int j=0;j<=sheet.getFirstrownum();j++)
因此,如果我们删除第一个,这在这里是不有用的,因为我们总是从excel表中获得数据,所以它会工作得很好······
第三个也一样,它在我的任务中也不是很有用...
所以我只需要这个循环
我们可以用这行替换pos20083list,它返回行的实数
int rows=sheet.getPhisicalNumberOfRows()-1
非常感谢Layne Bernardo的努力
我试图在我的测试自动化框架中实现一个数据驱动的方面。我已经创建了一个fe函数,它似乎工作正常,可以检索参数的列/行数,从特定单元格获取数据,更新特定单元格等等。 我现在正在用一个基本上有2列的脚本进行测试。第一列是用户名,第二列是密码。我可以遍历这些行,列没有问题。 我遇到了一个问题,如果有一个空白单元格,它会崩溃,但我通过一些错误处理解决了这个问题,如果有一个黑色单元格,它会返回字符串“空单元格
问题内容: 有人可以指出我正确的方向,以便在Java中写入Excel文件吗?我不了解我在网上找到的链接。您能给我发送链接还是我可以遵循的任何方式? 谢谢J 问题答案: 并不是平庸,但是Apache POI可以做到。您可以在此处找到一些代码示例: http //poi.apache.org/spreadsheet/examples.html
我已经创建了从excel中获取元素的脚本。 这是我的剧本 如果我的测试用例通过,我想在下一列写通过,如果失败,然后“失败”。 如何做到这一点,需要做些什么!!!
我将开发一个工作流程,我需要从Oracle DB中获取一些数据并在Excel文件中写入ResultSet。在开始之前,我想做一些测试。但是,我得到了以下运行时异常java.lang.NoClassDefFoundError.详细信息可以在下面找到。我知道我错过了一些非常愚蠢的东西,但我正在努力寻找答案。我感谢你的帮助。 这些是我正在使用的外部罐子 poi-4.1.2.jar poi-ooxml-4
我是新的Python和工作在我的第一个项目。我试图让我的代码从一个电子表格中复制数据列,并将其附加到当前存在于主表中的数据中。我能够捕获每个工作表中的数据,并创建一个新的主列表,该列表结合了两个数据集,但我很难将其写入文件。当我测试打印组合列表时,它们看起来是正确的,但是当我添加代码将列表写入文件时,它会挂起。 你能提供的任何帮助都会非常有用! 下面是我的代码。这是我得到的错误 Traceback
我正在使用POI()的流式工作表编写一个大型Excel表(超过一百万条记录),但我得到的是。下面是我的代码: