mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
!353 CsvWriter 增加 writer.write(csvData)
的方法重载;
Merge pull request !353 from dazer007/v5-dev
This commit is contained in:
commit
2b4311aca0
@ -19,7 +19,7 @@ public class CsvData implements Iterable<CsvRow>, Serializable {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param header 头信息
|
||||
* @param header 头信息, 可以为null
|
||||
* @param rows 行
|
||||
*/
|
||||
public CsvData(final List<String> header, final List<CsvRow> rows) {
|
||||
|
@ -17,7 +17,7 @@ public class CsvUtil {
|
||||
/**
|
||||
* 获取CSV读取器
|
||||
*
|
||||
* @param config 配置
|
||||
* @param config 配置, 允许为空.
|
||||
* @return {@link CsvReader}
|
||||
*/
|
||||
public static CsvReader getReader(CsvReadConfig config) {
|
||||
|
@ -207,6 +207,25 @@ public final class CsvWriter implements Closeable, Flushable, Serializable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将一个 CsvData 集合写出到Writer
|
||||
*
|
||||
* @param csvData CsvData
|
||||
* @return this
|
||||
*/
|
||||
public CsvWriter write(CsvData csvData) {
|
||||
if (csvData != null) {
|
||||
// 1、写header
|
||||
if (CollUtil.isNotEmpty(csvData.getHeader())) {
|
||||
this.writeLine(csvData.getHeader().toArray(new String[0]));
|
||||
}
|
||||
// 2、写内容
|
||||
this.write(csvData.getRows());
|
||||
flush();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将一个Bean集合写出到Writer,并自动生成表头
|
||||
*
|
||||
|
@ -7,6 +7,10 @@ import cn.hutool.core.io.IoUtil;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.XmlTransient;
|
||||
import java.io.File;
|
||||
import java.io.Reader;
|
||||
import java.io.StringWriter;
|
||||
@ -30,6 +34,12 @@ public class JAXBUtil {
|
||||
/**
|
||||
* JavaBean转换成xml
|
||||
*
|
||||
* bean上面用的常用注解
|
||||
* @see XmlRootElement <code>@XmlRootElement(name = "school")</code>
|
||||
* @see XmlElement <code>@XmlElement(name = "school_name", required = true)</code>
|
||||
* @see XmlElementWrapper <code>@XmlElementWrapper(name="schools")</code>
|
||||
* @see XmlTransient JAXB "有两个名为 "**" 的属性,类的两个属性具有相同名称 "**""解决方案
|
||||
*
|
||||
* @param bean Bean对象
|
||||
* @return 输出的XML字符串
|
||||
*/
|
||||
|
@ -1,15 +1,18 @@
|
||||
package cn.hutool.core.text.csv;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CsvUtilTest {
|
||||
|
||||
@ -48,13 +51,15 @@ public class CsvUtilTest {
|
||||
@Ignore
|
||||
public void readTest3() {
|
||||
CsvReader reader = CsvUtil.getReader();
|
||||
reader.read(FileUtil.getUtf8Reader("d:/test/test.csv"), Console::log);
|
||||
String path = FileUtil.isWindows() ? "d:/test/test.csv" : "~/test/test.csv";
|
||||
reader.read(FileUtil.getUtf8Reader(path), Console::log);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeTest() {
|
||||
CsvWriter writer = CsvUtil.getWriter("d:/test/testWrite.csv", CharsetUtil.CHARSET_UTF_8);
|
||||
String path = FileUtil.isWindows() ? "d:/test/testWrite.csv" : "~/test/testWrite.csv";
|
||||
CsvWriter writer = CsvUtil.getWriter(path, CharsetUtil.CHARSET_UTF_8);
|
||||
writer.write(
|
||||
new String[] {"a1", "b1", "c1", "123345346456745756756785656"},
|
||||
new String[] {"a2", "b2", "c2"},
|
||||
@ -73,7 +78,8 @@ public class CsvUtilTest {
|
||||
Integer age;
|
||||
}
|
||||
|
||||
CsvWriter writer = CsvUtil.getWriter("d:/test/testWriteBeans.csv", CharsetUtil.CHARSET_UTF_8);
|
||||
String path = FileUtil.isWindows() ? "d:/test/testWriteBeans.csv" : "~/test/testWriteBeans.csv";
|
||||
CsvWriter writer = CsvUtil.getWriter(path, CharsetUtil.CHARSET_UTF_8);
|
||||
List<Student> students = new ArrayList<>();
|
||||
Student student1 = new Student();
|
||||
student1.setId(1);
|
||||
@ -101,7 +107,8 @@ public class CsvUtilTest {
|
||||
@Ignore
|
||||
public void readLfTest(){
|
||||
final CsvReader reader = CsvUtil.getReader();
|
||||
final CsvData read = reader.read(FileUtil.file("d:/test/rw_test.csv"));
|
||||
String path = FileUtil.isWindows() ? "d:/test/rw_test.csv" : "~/test/rw_test.csv";
|
||||
final CsvData read = reader.read(FileUtil.file(path));
|
||||
for (CsvRow row : read) {
|
||||
Console.log(row);
|
||||
}
|
||||
@ -121,7 +128,47 @@ public class CsvUtilTest {
|
||||
list.add(1);
|
||||
resultList.add(list);
|
||||
|
||||
final CsvWriter writer = CsvUtil.getWriter("d:/test/csvWrapTest.csv", CharsetUtil.CHARSET_UTF_8);
|
||||
String path = FileUtil.isWindows() ? "d:/test/csvWrapTest.csv" : "~/test/csvWrapTest.csv";
|
||||
final CsvWriter writer = CsvUtil.getWriter(path, CharsetUtil.CHARSET_UTF_8);
|
||||
writer.write(resultList);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void writeDataTest(){
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
class User {
|
||||
Integer userId;
|
||||
String username;
|
||||
String mobile;
|
||||
}
|
||||
|
||||
List<String> header = ListUtil.of("用户id", "用户名", "手机号");
|
||||
List<CsvRow> row = new ArrayList<>();
|
||||
|
||||
List<User> datas = new ArrayList<>();
|
||||
datas.add(new User(1, "张三", "18800001111"));
|
||||
datas.add(new User(2, "李四", "18800001112"));
|
||||
datas.add(new User(3, "王五", "18800001113"));
|
||||
datas.add(new User(4, "赵六", "18800001114"));
|
||||
|
||||
//可以为null
|
||||
//Map<String, Integer> headMap = null;
|
||||
Map<String, Integer> headMap = new HashMap<>();
|
||||
headMap.put("userId", 0);
|
||||
headMap.put("username", 1);
|
||||
headMap.put("mobile", 2);
|
||||
|
||||
for (int i = 0; i < datas.size(); i++) {
|
||||
User user = datas.get(i);
|
||||
// row.size() + 1, 表示从第2行开始,第一行是标题栏
|
||||
row.add(new CsvRow(row.size() + 1, headMap, ListUtil.toList(BeanUtil.beanToMap(user).values()).stream().map(Object::toString).collect(Collectors.toList())));
|
||||
}
|
||||
|
||||
CsvData csvData = new CsvData(header, row);
|
||||
String path = FileUtil.isWindows() ? "d:/test/csvWriteDataTest.csv" : "~/test/csvWriteDataTest.csv";
|
||||
final CsvWriter writer = CsvUtil.getWriter(path, CharsetUtil.CHARSET_UTF_8);
|
||||
writer.write(csvData);
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import javax.xml.bind.annotation.*;
|
||||
*/
|
||||
public class JAXBUtilTest {
|
||||
|
||||
private String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
|
||||
private final String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
|
||||
"<school>\n" +
|
||||
" <school_name>西安市第一中学</school_name>\n" +
|
||||
" <school_address>西安市雁塔区长安堡一号</school_address>\n" +
|
||||
|
@ -197,6 +197,15 @@ public class XmlUtilTest {
|
||||
|
||||
@Test
|
||||
public void xmlToBeanTest() {
|
||||
@Data
|
||||
class TestBean {
|
||||
private String ReqCode;
|
||||
private String AccountName;
|
||||
private String Operator;
|
||||
private String ProjectCode;
|
||||
private String BankCode;
|
||||
}
|
||||
|
||||
final TestBean testBean = new TestBean();
|
||||
testBean.setReqCode("1111");
|
||||
testBean.setAccountName("账户名称");
|
||||
@ -217,6 +226,11 @@ public class XmlUtilTest {
|
||||
|
||||
@Test
|
||||
public void xmlToBeanTest2(){
|
||||
@Data
|
||||
class SmsRes {
|
||||
private String code;
|
||||
}
|
||||
|
||||
//issue#1663@Github
|
||||
String xmlStr = "<?xml version=\"1.0\" encoding=\"gbk\" ?><response><code>02</code></response>";
|
||||
|
||||
@ -233,11 +247,6 @@ public class XmlUtilTest {
|
||||
Assert.assertEquals(res.toString(), res1.toString());
|
||||
}
|
||||
|
||||
@Data
|
||||
static class SmsRes {
|
||||
private String code;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void cleanCommentTest() {
|
||||
final String xmlContent = "<info><title>hutool</title><!-- 这是注释 --><lang>java</lang></info>";
|
||||
@ -245,16 +254,6 @@ public class XmlUtilTest {
|
||||
Assert.assertEquals("<info><title>hutool</title><lang>java</lang></info>", ret);
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class TestBean {
|
||||
private String ReqCode;
|
||||
private String AccountName;
|
||||
private String Operator;
|
||||
private String ProjectCode;
|
||||
private String BankCode;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void formatTest(){
|
||||
|
Loading…
Reference in New Issue
Block a user