Используйте EasyExcel для реализации функций чтения и записи файлов CSV.
Используйте EasyExcel для реализации функций чтения и записи файлов CSV.
1. Idea создает проект SpringBoot:

Как показано на рисунке:

здесь Вставьте описание изображения
здесь Вставьте описание изображения

Выберите Spring Init

Установите идентификатор группы и другую информацию, выберите версию jdk, другие могут быть использованы по умолчанию;

При использовании метода по умолчанию для создания проекта иногда сообщается об ошибке времени ожидания соединения;

На данный момент вам необходимо изменить URL-адрес сервера (это не обязательно);

здесь Вставьте описание изображения
здесь Вставьте описание изображения

Сгенерированный каталог проекта выглядит следующим образом:

здесь Вставьте описание изображения
здесь Вставьте описание изображения

Поскольку склад maven находится во внешней сети и сетевое соединение медленное, рекомендуется настроить внутренний источник, как описано выше;

До сих пор. Один проект завершен;

2. Анализ CSV-файла

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 соответственно, преобразуйте данные чтения «один ко многим» в карту, просмотрите список данных первого файла, получите атрибут «один ко многим», а затем запишите его в файл;

Этапы реализации:

  • Прочтите первый файл:

Используйте самый простой способ чтения файлов, объявите внутренний класс прослушивания и запишите все данные в список.

Язык кода:java
копировать
 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 строк;

Язык кода:java
копировать
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;
    }

Сгруппируйте список чтения: используйте поток

Язык кода:txt
копировать
//Группа
    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;

Язык кода:java
копировать
public static void writeRdt(String filePath, List<WriteMo> datas){
        EasyExcel.write(filePath, WriteMo.class)
                .excelType(ExcelTypeEnum.CSV)
                .sheet("data")
                .doWrite(datas);
    }

Модель использует ломбок и устанавливает информацию о заголовке;

Язык кода:txt
копировать
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'

3. Интегрируйте чванство3

Введем зависимости:

implementation 'io.springfox:springfox-boot-starter:3.0.0'

Добавлен класс запуска: @EnableOpenApi.

После запуска адрес Swagger: http://ip:port/swagger-ui/.

Завершить сборку.gradle
Язык кода:txt
копировать
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
}
boy illustration
Как использовать PaddleOCRSharp в рамках .NET
boy illustration
CRUD используется уже два или три года. Как читать исходный код Spring?
boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.