Я пытался настроить код с этого сайта , чтобы преобразовать таблицы в книге Excel в файлы CSV. Я сделал несколько небольших модификаций выше рассматриваемого сегмента и только добавил метку к этому сегменту, так как в противном случае он выдавал другую ошибку. Теперь я получаю неожиданную ошибку токена на первом "=" в моем цикле for:
.groovy: 21: unexpected token: = @ line 21, column 16.
for (int r = 0, rn = sheet.getLastRowNum() ; r <= rn ; r++) {
^
1 error
Весь скрипт включен ниже. Я попытался перепечатать код, чтобы найти какие-либо синтаксические ошибки, но боюсь, что это может быть просто неправильным пониманием того, как groovy интерпретирует этот код.
#!/usr/bin/env groovy
@Grab(group='org.apache.poi', module='poi', version='4.1.0')
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.apache.poi.ss.usermodel.DataFormatter
Workbook wb = new XSSFWorkbook(new File(this.args));
int sheetNo = Integer.parseInt(args[index++]);
FormulaEvaluator fe = null;
if ( index < args.length ) {
fe = wb.getCreationHelper().createFormulaEvaluator();
}
DataFormatter formatter = new DataFormatter();
PrintStream out = new PrintStream(new FileOutputStream(csvFile), true, "UTF-8");
byte[] bom = [(byte)0xEF, (byte)0xBB, (byte)0xBF];
out.write(bom);
label:{
Sheet sheet = wb.getSheetAt(sheetNo);
for (int r = 0, rn = sheet.getLastRowNum() ; r <= rn ; r++) {
Row row = sheet.getRow(r);
if ( row == null ) { out.println(','); continue; }
boolean firstCell = true;
for (int c = 0, cn = row.getLastCellNum() ; c < cn ; c++) {
Cell cell = row.getCell(c, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL);
if ( ! firstCell ) out.print(',');
if ( cell != null ) {
if ( fe != null ) cell = fe.evaluateInCell(cell);
String value = formatter.formatCellValue(cell);
if ( cell.getCellTypeEnum() == CellType.FORMULA ) {
value = "=" + value;
}
out.print(encodeValue(value));
}
firstCell = false;
}
out.println();
}
}