[英]How do I set a cell value using Apache POI for an adjacent column?
我的目标是遍历2列已存在的Excel电子表格。 一个称为制造商,另一个称为DNC或请勿联系。
我想遍历我拥有的制造商列表,并用红色标记那些不应该联系的制造商,并在制造商名称列表旁边的相邻空白栏中标记一些无法联系他们的注释。 我在下面附加了我的代码。
我将每个制造商对象的字段存储在一个名为“ mu”的链接列表中,它们是“名称”和“ DNC_Reason”。
Iterator<Row> rowIterator2 = spreadsheet.iterator();
while (rowIterator2.hasNext()) {
Row row2 = rowIterator2.next();
Cell DNC_Reason = row2.getCell(1);
if(row2.getCell(1) == null) {
row2.createCell(1);
}
Iterator<Cell> cellIterator2 = row2.cellIterator();
while (cellIterator2.hasNext()) {
Cell cell = cellIterator2.next();
Pattern p = Pattern.compile("[\\.$|,|;|'|\\s|-]|\\b(LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc)\\b", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(cell.getStringCellValue());
String s = m.replaceAll("");
for (Manufacturer mu : mfgs) {
if (cell.getColumnIndex() == 0 && mu.getName().equals(s)) {
cell.setCellStyle(style);
DNC_Reason.setCellValue(mu.getDNCReason());
}
}
}
}
not-to-be-contacted-manufacturers
创建一个地图,名称为键,制造商为值。 然后,您可以使用containsKey
而不是继续在mfgs-list
迭代。 rowIterator
的结果遍历行。 您不需要其他迭代器。 DNC_Reason
更好的名称是dncReasonCell
) 假定制造商单元已填充的示例代码getStringValue()
如果未提供适当的值,则getStringValue()
可能会导致NullPointerException
),初始化样式变量,并且您具有一个不被联系的制造商映射:
Iterator<Row> rowIterator = spreadsheet.rowIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Cell dncReasonCell = row.getCell(1);
if (dncReasonCell == null) {
dncReasonCell = row.createCell(1, CellType.STRING);
}
Cell manufacturerCell = row.getCell(0);
String manufacturerNameForDncTest = Pattern
.compile("[\\.$|,|;|'|\\s|-]|\\b(LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc)\\b", Pattern.CASE_INSENSITIVE)
.matcher(manufacturerCell.getStringCellValue()).replaceAll("");
if (notToBeContactedManufacturers.containsKey(manufacturerNameForDncTest)) {
manufacturerCell.setCellStyle(style);
dncReasonCell.setCellValue(notToBeContactedManufacturers.get(manufacturerNameForDncTest).getDNCReason());
} else {
dncReasonCell.setCellValue("");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.