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

209
22 сентября 2018, 23:40

У меня есть 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;
}
Answer 1
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);
}
READ ALSO
Отсчет секунд на Java

Отсчет секунд на Java

Подскажите, пожалуйста, как реализовать на Java вывод кол-ва секунд, прошедшего со старта программы? Заранее спасибо

180
Область видимости JAVA

Область видимости JAVA

Как перебросить переменную с method1() в method2()?

224
Использование Xerces-2.12

Использование Xerces-2.12

Java 8 из коробки поддерживает xerces-j 27

166