Class CsvWriter

java.lang.Object
org.miaixz.bus.office.csv.CsvWriter
All Implemented Interfaces:
Closeable, Flushable, Serializable, AutoCloseable

public final class CsvWriter extends Object implements Closeable, Flushable, Serializable
CSV数据写出器
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • CsvWriter

      public CsvWriter(String filePath)
      构造,覆盖已有文件(如果存在),默认编码UTF-8
      Parameters:
      filePath - File CSV文件路径
    • CsvWriter

      public CsvWriter(File file)
      构造,覆盖已有文件(如果存在),默认编码UTF-8
      Parameters:
      file - File CSV文件
    • CsvWriter

      public CsvWriter(String filePath, Charset charset)
      构造,覆盖已有文件(如果存在)
      Parameters:
      filePath - File CSV文件路径
      charset - 编码
    • CsvWriter

      public CsvWriter(File file, Charset charset)
      构造,覆盖已有文件(如果存在)
      Parameters:
      file - File CSV文件
      charset - 编码
    • CsvWriter

      public CsvWriter(String filePath, Charset charset, boolean isAppend)
      构造
      Parameters:
      filePath - File CSV文件路径
      charset - 编码
      isAppend - 是否追加
    • CsvWriter

      public CsvWriter(File file, Charset charset, boolean isAppend)
      构造
      Parameters:
      file - CSV文件
      charset - 编码
      isAppend - 是否追加
    • CsvWriter

      public CsvWriter(String filePath, Charset charset, boolean isAppend, CsvWriteConfig config)
      构造
      Parameters:
      filePath - CSV文件路径
      charset - 编码
      isAppend - 是否追加
      config - 写出配置,null则使用默认配置
    • CsvWriter

      public CsvWriter(File file, Charset charset, boolean isAppend, CsvWriteConfig config)
      构造
      Parameters:
      file - CSV文件
      charset - 编码
      isAppend - 是否追加, append=true模式下,endingLineBreak自动设置为true
      config - 写出配置,null则使用默认配置
    • CsvWriter

      public CsvWriter(Writer writer)
      构造,使用默认配置
      Parameters:
      writer - Writer
    • CsvWriter

      public CsvWriter(Writer writer, CsvWriteConfig config)
      构造
      Parameters:
      writer - Writer
      config - 写出配置,null则使用默认配置
  • Method Details

    • setAlwaysDelimitText

      public CsvWriter setAlwaysDelimitText(boolean alwaysDelimitText)
      设置是否始终使用文本分隔符,文本包装符,默认false,按需添加
      Parameters:
      alwaysDelimitText - 是否始终使用文本分隔符,文本包装符,默认false,按需添加
      Returns:
      this
    • setLineDelimiter

      public CsvWriter setLineDelimiter(char[] lineDelimiter)
      设置换行符
      Parameters:
      lineDelimiter - 换行符
      Returns:
      this
    • setDdeSafe

      public CsvWriter setDdeSafe(boolean ddeSafe)
      设置是否启用dde安全模式,默认false,按需修改 防止使用Excel打开csv文件时存在dde攻击风险 注意此方法会在字段第一个字符包含= + - @时添加'作为前缀,防止公式执行
      Parameters:
      ddeSafe - 是否启用 dde 安全模式
      Returns:
      this
    • write

      public CsvWriter write(String[]... lines) throws org.miaixz.bus.core.lang.exception.InternalException
      将多行写出到Writer
      Parameters:
      lines - 多行数据
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • write

      public CsvWriter write(Iterable<?> lines) throws org.miaixz.bus.core.lang.exception.InternalException
      将多行写出到Writer
      Parameters:
      lines - 多行数据,每行数据可以是集合或者数组
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • write

      public CsvWriter write(CsvData csvData)
      将一个 CsvData 集合写出到Writer
      Parameters:
      csvData - CsvData
      Returns:
      this
    • writeBeans

      public CsvWriter writeBeans(Iterable<?> beans, String... properties)
      将一个Bean集合写出到Writer,并自动生成表头
      Parameters:
      beans - Bean集合
      properties - 可选属性列表,空表示全部属性
      Returns:
      this
    • writeBeans

      public CsvWriter writeBeans(Iterable<?> beans, boolean writeHeaderLine, String... properties)
      将一个Bean集合写出到Writer,并自动生成表头
      Parameters:
      beans - Bean集合
      writeHeaderLine - 是否写出表头,即Bean的字段名称列表作为首行
      properties - 可选属性列表,空表示全部属性
      Returns:
      this
    • writeHeaderLine

      public CsvWriter writeHeaderLine(String... fields) throws org.miaixz.bus.core.lang.exception.InternalException
      写出一行头部行,支持标题别名
      Parameters:
      fields - 字段列表 (null 值会被做为空值追加
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • writeLine

      public CsvWriter writeLine(String... fields) throws org.miaixz.bus.core.lang.exception.InternalException
      写出一行
      Parameters:
      fields - 字段列表 (null 值会被做为空值追加)
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • writeLine

      public CsvWriter writeLine() throws org.miaixz.bus.core.lang.exception.InternalException
      追加新行(换行)
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • writeComment

      public CsvWriter writeComment(String comment)
      写出一行注释,注释符号可自定义 如果注释符不存在,则抛出异常
      Parameters:
      comment - 注释内容
      Returns:
      this
      See Also:
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • flush

      public void flush() throws org.miaixz.bus.core.lang.exception.InternalException
      Specified by:
      flush in interface Flushable
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException