Giriş
Şu satırı dahil ederiz. CVS dosyası yazmak/oluşturmak için kullanılır. withDelimeter() metodu ile ayraç belirtilir. withHeader() metodu ile varsa başlıklar belirtilir.
Örnek - Writer + CVSFormat.EXCEL
Şöyle yaparız.
Şöyle yaparız
Elimizde şöyle bir kod olsun.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz. CVS dosyası yazmak/oluşturmak için kullanılır. withDelimeter() metodu ile ayraç belirtilir. withHeader() metodu ile varsa başlıklar belirtilir.
import org.apache.commons.csv.CSVFormat
import org.apache.commons.csv.CSVPrinter
constructor - File + CVSFormat
Şöyle yaparız.
constructor - Writer + CVSFormatŞöyle yaparız.
final File out = new File(path);
try(CSVPrinter printer = new CSVPrinter(out, CSVFormat.DEFAULT
.withDelimiter(' ')) {
...
}
Örnek - Writer + CVSFormat.EXCEL
Şöyle yaparız.
String SAMPLE_CSV_FILE = "./sample.csv";
try (
BufferedWriter writer = Files.newBufferedWriter(Paths.get(SAMPLE_CSV_FILE));
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.EXCEL
.withHeader("ID", "Name", "Designation", "Company"));
) {
csvPrinter.printRecord("1", "Name1 ", "CEO", "Google");
csvPrinter.printRecord("2", "Name2", "CEO", "Microsoft");
csvPrinter.flush();
}
Örnek - Writer + CVSFormat.DEFAULTŞöyle yaparız
try (var output = new ByteArrayOutputStream();
var printer = new CSVPrinter(new OutputStreamWriter(output), CSVFormat.DEFAULT)) {
...
}
Örnek - Writer + CVSFormat.DEFAULT.withHeaderElimizde şöyle bir kod olsun.
public enum Header
{
FIRST_NAME(),
LAST_NAME(),
GENDER();
}
Şöyle yaparız.try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(outputFile));
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(
Header.class));) {
...
} catch (IOException ex) {
...
}
Örnek - Writer + CVSFormat.DEFAULT.withHeaderŞöyle yaparız.
String SAMPLE_CSV_FILE = "./sample.csv";
try (
BufferedWriter writer = Files.newBufferedWriter(Paths.get(SAMPLE_CSV_FILE));
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT
.withHeader("ID", "Name", "Designation", "Company"));
) {
csvPrinter.printRecord("1", "...", "...");
...
}
flush metoduŞöyle yaparız.
var printer = new CSVPrinter(...);
printer.flush();
toCharArray metoduŞöyle yaparız.
CharArrayWriter writer = new CharArrayWriter()
CSVPrinter csvPrinter = new CSVPrinter(writer,
CSVFormat.DEFAULT.withHeader("ID", "Name", "Designation", "Company"))
csvPrinter.printRecord("1", "Test", "Test", "Test")
csvPrinter.printRecord("2", "Test", "Test", "Test")
csvPrinter.printRecord("3", "Test", "Test", "Test")
csvPrinter.printRecord("4", "Test", "Test", "Test")
csvPrinter.flush()
response.outputStream << writer.toCharArray()
printRecord metodu - Object[]İmzası şöyle
public void printRecord(final Object... values) throws IOException
Tek bir satır yazar.
Örnek
Şöyle yaparız.
İmzası şöyle
Şöyle yaparız.
csvPrinter.printRecord("1", "Name1 ", "CEO", "Google");
printRecord metodu - Iterableİmzası şöyle
public void printRecord(final Iterable<?> values) throws IOException
Tek bir satır yazar.
Örnek - List<List<String>>
Örnek - List<List<String>>
Şöyle yaparız
tring[] csvHeader = {"name", "surname", "age"};
List<List<String>> csvBody = new ArrayList<>();
csvBody.add(Arrays.asList("Patricia", "Williams", "25"));
csvBody.add(Arrays.asList("John", "Smith", "44"));
csvBody.add(Arrays.asList("Douglas", "Brown", "31"));
ByteArrayInputStream byteArrayOutputStream;
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
// defining the CSV printer
CSVPrinter csvPrinter = new CSVPrinter(
new PrintWriter(out),
// withHeader is optional
CSVFormat.DEFAULT.withHeader(csvHeader)
);
) {
// populating the CSV content
for (List<String> record : csvBody)
csvPrinter.printRecord(record);
// writing the underlying stream
csvPrinter.flush();
byteArrayOutputStream = new ByteArrayInputStream(out.toByteArray());
} catch (IOException e) {
...
}
Örnek
Elimizde şöyle bir kod olsun.
public enum Header {
FIRST_NAME(),
LAST_NAME(),
GENDER();
}
Elimizde şöyle bir kod olsun.List<Map<Header, String>> output = new ArrayList<>();
Map<Header, String> map = new LinkedHashMap<>();
map.put(Header.FIRST_NAME, "John");
map.put(Header.LAST_NAME, "Andrew");
map.put(Header.GENDER, "Male");
output.add(map);
Şöyle yaparız.for (Map<Header, String> val : output) {
csvPrinter.printRecord(val.values().toArray());
}
Eğer LinkedHashMap yerine HashMap kullansaydık şöyle yaparız.for (Map<Header, String> row : output) {
csvPrinter.printRecord(Arrays.asList(Header.values()) //enumları sırayla dolaş
.stream()
.map(header -> row.get(header))
.collect(Collectors.toList()));
}
printRecords metodu - Iterableİmzası şöyle
public void printRecords(final Iterable<?> values) throws IOException
public void printRecords(final Object... values) throws IOException
public void printRecords(final ResultSet resultSet) throws SQLException, IOException
public void printRecords(final ResultSet resultSet, final boolean printHeader)
throws SQLException, IOException
Örnek
Şöyle yaparız
List<CSVRecord> csvRecords = ...;
BufferedWriter writer = ...;
CSVPrinter csvPrinter =
new CSVPrinter(
writer,
CSVFormat.DEFAULT.withHeader(
"Username",
"Password",
"Amount",
"Timestamp"));
csvPrinter.printRecords(csvRecords);
csvPrinter.flush();
csvPrinter.close();
Hiç yorum yok:
Yorum Gönder