【Java】CsvFormatライブラリを使用してcsvファイルをアップロードするよ!
CsvFormatライブラリを使用してJavaでCSVアップロード機能を作成する手順を紹介します!
Spring BootでAPIのリクエストから受け取ったCSVファイルをアップロードし、CsvFormatを使用して処理する例を以下に示します
この例ではMultipartフォームでファイルをアップロードし、コントローラーでそのファイルを受け取り、CsvFormatを使用してCSVデータを解析します!
まず、Apache Commons CSVをプロジェクトに組み込みます。Mavenプロジェクトの場合は、pom.xmlファイルに以下の依存関係を追加します
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9</version> <!-- 最新のバージョンに置き換えてください -->
</dependency>
Gradleプロジェクトの場合は、build.gradleファイルに以下を追加します
implementation 'org.apache.commons:commons-csv:1.9' // 最新のバージョンに置き換えてください
では、CSVファイルのアップロード機能を実装していきましょう
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@RestController
public class CsvUploadController {
@PostMapping("/upload")
public ResponseEntity<String> uploadCsv(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return ResponseEntity.badRequest().body("No file uploaded");
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
// CSVファイルのパース
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT);
for (CSVRecord csvRecord : csvParser) {
// 各行の処理
String column1 = csvRecord.get(0); // 1番目の列
String column2 = csvRecord.get(1); // 2番目の列
// ここでデータベースへの保存などの処理を行う
System.out.println("Column 1: " + column1 + ", Column 2: " + column2);
}
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to process CSV file");
}
return ResponseEntity.ok("CSV file uploaded successfully");
}
}
CSVファイルの内容はCSVRecordオブジェクトとして処理され、必要に応じてデータベースに保存されるなどの処理を行うことができます
また、エラーが発生した場合は適切なエラーレスポンスが返されます
ちなみに、「CSVFormat.DEFAULT」は以下のような処理がされます
- 区切り文字:
デフォルトではカンマ (,) が区切り文字として使用されますが、必要に応じて設定を変更することができます - クォート:
デフォルトではクォート文字はダブルクォート (“) です
クォートされたフィールド内に区切り文字が含まれている場合、そのフィールドはクォートされます - ヘッダー:
デフォルトではヘッダーがないと仮定されます
つまり、最初の行がデータとして処理されます
必要に応じて、ヘッダーがあることを明示的に指定することもできます - 改行:
デフォルトではWindows、Unix、または古いMac OS形式の改行文字が自動的に検出されます
便利ですね~
是非参考ください!
是非フォローしてください
最新の情報をお伝えします