моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Недавно произошел сценарий, когда файл csv был прочитан на ftp-сервере и помещен в базу данных, но некоторые файлы, предоставленные клиентом, были файлами xls, поэтому нам пришлось найти способ конвертировать файлы Excel в файлы csv. началось без лишних слов.
public static void convertExcelToCSV(String excelFilePath, String csvFilePath) throws IOException {
FileInputStream inputStream = new FileInputStream(excelFilePath);
Workbook workbook = getWorkbook(inputStream, excelFilePath);
inputStream.close();
FileWriter writer = new FileWriter(csvFilePath);
for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
StringBuilder stringBuilder = new StringBuilder();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
stringBuilder.append(getCellValue(cell));
if (cellIterator.hasNext()) {
stringBuilder.append(",");
}
}
writer.write(stringBuilder.toString() + "n");
}
if (sheetIndex < workbook.getNumberOfSheets() - 1) {
writer.write("n"); // 在不同工作表之间添加一个空行
}
}
writer.flush();
writer.close();
workbook.close();
}
private static Workbook getWorkbook(FileInputStream inputStream, String excelFilePath) throws IOException {
Workbook workbook = null;
if (excelFilePath.endsWith("xlsx")) {
workbook = new XSSFWorkbook(inputStream);
} else if (excelFilePath.endsWith("xls")) {
workbook = new HSSFWorkbook(inputStream);
} else {
throw new IllegalArgumentException("The specified file is not an Excel file");
}
return workbook;
}
private static String getCellValue(Cell cell) {
//DataFormatter formatter = new DataFormatter();
String formatPattern = "yyyy-MM-dd HH:mm:ss"; // 自定义日期时间格式
//FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
switch (cell.getCellType()) {
case STRING:
return cell.getRichStringCellValue().getString();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
DateFormat dateFormat = new SimpleDateFormat(formatPattern);
return dateFormat.format(date);
} else {
return Double.toString(cell.getNumericCellValue());
}
case BOOLEAN:
return Boolean.toString(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
default:
return "";
}
}
public static void main(String[] args) {
String excelFilePath = "D:\我是excel文件.xlsx";
String csvFilePath = "D:\我是csv文件.csv";
try {
convertExcelToCSV(excelFilePath, csvFilePath);
System.out.println("Excel file converted to CSV successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
Вышеописанное представляет собой интеграцию保留时间格式
Все необходимые коды, личный тест очень прост в использовании!