Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

Как удалить/заменить символы в строке в JAVA используя Apache POI

У меня есть exel файл в котором 2 колонки: номер телефона и имена. Например 380677777055 - ОЛЕГ И в номере телефона бывают ошибки когда вместо "0" стоит буква "О" или запятая. Как мне вывести в .txt файл все значения без ошибок? Не получается из за того что меняет символы и в строке с именами.
public class ExelToTxt {
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); public static DataFormatter ndt = new DataFormatter();
public static void main(String[] args) throws IOException {
FileInputStream fisStat = new FileInputStream("C:/Users/ё/Desktop/ТРА.xls");
FileOutputStream fos = new FileOutputStream("my4.txt");
Workbook wbStat = new HSSFWorkbook(fisStat);
fisStat.close();
Sheet sheetInputStat = wbStat.getSheetAt(0);
StringBuffer sb = new StringBuffer();
int i = 0;
for (Row row : sheetInputStat) {
Cell cellNumber = row.getCell(i); Cell cellInquiry = row.getCell(i + 1); Cell cellInquiry1 = row.getCell(i + 2); Cell cellInquiry2 = row.getCell(i + 3); Cell cellInquiry3 = row.getCell(i + 4); Cell cellInquiry4 = row.getCell(i + 5); Cell cellInquiry5 = row.getCell(i + 6); Cell cellInquiry6 = row.getCell(i + 7); Cell cellInquiry7 = row.getCell(i + 8); Cell cellInquiry8 = row.getCell(i + 9); Cell cellInquiry9 = row.getCell(i + 10);
NullVerify(cellNumber,sb); NullVerify(cellInquiry,sb); NullVerify(cellInquiry1,sb); NullVerify(cellInquiry2,sb); NullVerify(cellInquiry3,sb); NullVerify(cellInquiry4,sb); NullVerify(cellInquiry5,sb); NullVerify(cellInquiry6,sb); NullVerify(cellInquiry7,sb); NullVerify(cellInquiry8,sb); NullVerify(cellInquiry9,sb);
sb.append(System.getProperty("line.separator"));
}
fos.flush(); fos.write(sb.toString().getBytes()); fos.close(); }
static void replace(char[] arr, char find, char replace) { for (int i = 0; i < arr.length; i++) { while (arr[i] == find) { arr[i] = replace; } while (arr[i] == ',') { arr[i] = '!'; } } }
static void NullVerify(Cell CellName,StringBuffer stb) { if (CellName != null) { stb.append(getCellText(CellName)); stb.append("\t");
} }
// берем строковое значение из любой ячейки public static String getCellText(Cell cell) {
String result = "";
switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: result = cell.getRichStringCellValue().getString(); break; case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { result = sdf.format(cell.getDateCellValue()); } else { result = ndt.formatCellValue(cell); } break; case Cell.CELL_TYPE_BOOLEAN: result = Boolean.toString(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: result = cell.getCellFormula().toString(); break; case Cell.CELL_TYPE_BLANK: break; default: break; } return result; }


Ответ

HSSFWorkbook wb = null; try (InputStream in = new FileInputStream(args[0])) { wb = new HSSFWorkbook(in); }
DataFormatter formatter = new DataFormatter(); Sheet sheet = wb.getSheetAt(0); for (int i = 0; i <= sheet.getLastRowNum(); i++) { Cell cell = sheet.getRow(i).getCell(0); String value = formatter.formatCellValue(cell); cell.setCellValue(value.replace("O", "0")); }
try (OutputStream out = new FileOutputStream(args[0])) { wb.write(out); }

Комментариев нет:

Отправить комментарий