Как показано на рисунке:
Выберите Spring Init
Установите идентификатор группы и другую информацию, выберите версию jdk, другие могут быть использованы по умолчанию;
При использовании метода по умолчанию для создания проекта иногда сообщается об ошибке времени ожидания соединения;
На данный момент вам необходимо изменить URL-адрес сервера (это не обязательно);
Сгенерированный каталог проекта выглядит следующим образом:
Поскольку склад maven находится во внешней сети и сетевое соединение медленное, рекомендуется настроить внутренний источник, как описано выше;
До сих пор. Один проект завершен;
EasyExcel — это простой, экономящий память проект с открытым исходным кодом для чтения и записи Excel на основе Java. Поддерживает чтение и запись 100M Excel, максимально экономя память. Поддерживается начиная с версии 3.0.0-beta1. Оно будет автоматически оцениваться при чтении, как и при чтении Excel. Но при написании вам необходимо указать ExcelType как CSV;
easyexcelОфициальный адрес сайта:здесь
Адрес исходного кода GitHub,прямой
Последняя версия easyexcel на данный момент — 3.1.1.
Первый — ввести зависимости:
Добавьте новую строку в build.gradle
implementation 'com.alibaba:easyexcel:3.1.1'
Требования к проекту:
Существует два файла CSV, другой содержит информацию о нескольких записях, а другой файл содержит одну запись, соответствующую нескольким атрибутам, эти два файла необходимо объединить в один файл;
Идеи реализации:
Прочитайте два файла CSV соответственно, преобразуйте данные чтения «один ко многим» в карту, просмотрите список данных первого файла, получите атрибут «один ко многим», а затем запишите его в файл;
Этапы реализации:
Используйте самый простой способ чтения файлов, объявите внутренний класс прослушивания и запишите все данные в список.
public static List<RundownMo> readRd(String filePath){
List<RundownMo> rdList = new ArrayList<>();
EasyExcel.read(filePath, RundownMo.class, new ReadListener<RundownMo>() {
@Override
public void invoke(RundownMo data, AnalysisContext context) {
rdList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println(rdList.size());
}
}).charset(Charset.forName("UTF-8")).sheet().doRead();
return rdList;
}
Следует отметить, что при чтении файла CSV с китайскими иероглифами могут появиться искаженные символы. В это время вам необходимо вызвать функцию charset, чтобы установить набор символов;
Более простой способ чтения файлов, чтение страниц, по умолчанию — 100 строк;
public static List<RundownTitleMo> readRt(String filePath){
List<RundownTitleMo> rtList = new ArrayList<>();
EasyExcel.read(filePath, RundownTitleMo.class,
new PageReadListener<RundownTitleMo>(datalist ->{
//System.out.println(datalist.size()+"=");
rtList.addAll(datalist);
})).sheet().doRead();
//System.out.println(rtList.size()+"==");
return rtList;
}
Сгруппируйте список чтения: используйте поток
//Группа
public static Map<String,List<RundownTitleMo>> group(List<RundownTitleMo> rtList){
// идентификатор группы
Map<String,List<RundownTitleMo>> map = rtList.stream().collect(Collectors.groupingBy(t -> t.getRId()));
return map;
}
Собрать ранее полученные данные в список и записать в csv;
public static void writeRdt(String filePath, List<WriteMo> datas){
EasyExcel.write(filePath, WriteMo.class)
.excelType(ExcelTypeEnum.CSV)
.sheet("data")
.doWrite(datas);
}
Модель использует ломбок и устанавливает информацию о заголовке;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@EqualsAndHashCode
public class WriteMo{
@ExcelProperty("ID")
private String rId;
@ExcelProperty("имя")
private String name; //имя
@ExcelProperty("Создатель")
private String creator; //Создатель
}
Представляем ломбок:
compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
Введем зависимости:
implementation 'io.springfox:springfox-boot-starter:3.0.0'
Добавлен класс запуска: @EnableOpenApi.
После запуска адрес Swagger: http://ip:port/swagger-ui/.
plugins {
id 'org.springframework.boot' version '2.7.4'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'org.asciidoctor.convert' version '1.5.8'
id 'java'
}
group = 'com.csv'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
maven {
allowInsecureProtocol = true
name 'Aliyun Maven Repository'
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
mavenCentral()
}
ext {
set('snippetsDir', file("build/generated-snippets"))
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.alibaba:easyexcel:3.1.1'
implementation 'io.springfox:springfox-boot-starter:3.0.0'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
}
tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
}
tasks.named('asciidoctor') {
inputs.dir snippetsDir
dependsOn test
}