Как создать Excel с объектом в Android и отправить его по электронной почте - PullRequest
7 голосов
/ 29 марта 2019

В моем приложении у меня есть объект записей, скажем, мне нужно провести тест с более чем 5 парнями, чтобы я мог получить результаты всех из них, и у меня есть Объект со всей этой информацией, не так ли? можно преобразовать этот объект в файл Excel? Например:

|---------------------|------------------|
|        Quiz         |     Question 1   |...
|---------------------|------------------|
|      Quiz Name      |    What's 1+1    |...
|---------------------|------------------|

Как-то так, чтобы знать каждого пользователя, который ответил и его оценку, все это у меня есть на моем Объекте.

А потом, если я смогу отправить его по почте, .xls или любой другой формат.

EDIT

Например, мне нужно имя Викторины, и если я могу добавить больше об этой викторине, это нормально, но тогда мне нужно добавить, что все пользователи задали этот тест (еще один объект из API), чтобы я мог получить имя и оценка.

Я хотел бы иметь .csv или Excel независимо от того, где указано явное:

Допустим, у меня есть список:

  1. создано в
  2. обновлено на
  3. пользователь (только user.email)
  4. Викторина (только имя викторины)
  5. totalPoints

Итак, я хочу заполнить его до .csv или Excel независимо от

Ответы [ 4 ]

6 голосов
/ 08 апреля 2019

CSV-файл - это простой текстовый файл, разделенный запятыми. В вашем случае формат будет:

Quiz,Question 1
Quiz Name,What's 1+1

Пока вы можете записывать записи в вышеуказанном формате в файл с расширением "csv", вы сможете открыть его в Excel и отправить его по электронной почте.

Пожалуйста, обратитесь к следующей записи stackoverflow.

Как создать .csv на android

3 голосов
/ 10 апреля 2019

Вот пример того, что вы могли бы сделать.

Сначала я создал класс Вопросов:

class Question {
    String question;
    String answer;

    Question(String question, String answer) {
        this.question = question;
        this.answer = answer;
    }
}

И класс викторины:

public class Quiz {

    String quizName;
    List<Question> questions;

    void addQuestion(Question question) {
        if (null == questions) {
            questions = new ArrayList<>();
        }
        questions.add(question);
    }
}

Тогда вот собственно приложение, в котором я использую Apache POI:

public class MailExcel {

    public static void main(String[] args) {

        //Creating the quiz

        Quiz mQuiz = new Quiz();
        mQuiz.quizName = "Excel-quiz";
        Question question1 = new Question("Where do you find the best answers?", "Stack-Overflow");
        Question question2 = new Question("Who to ask?", "mwb");
        mQuiz.addQuestion(question1);
        mQuiz.addQuestion(question2);


        //Creating the workbook

        Workbook workbook = new XSSFWorkbook();
        CreationHelper creationHelper = workbook.getCreationHelper();
        Sheet sheet = workbook.createSheet("Quiz");
        Row row1 = sheet.createRow(0);
        Row row2 = sheet.createRow(1);
        row1.createCell(0).setCellValue("Quiz");
        row2.createCell(0).setCellValue(mQuiz.quizName);
        int col = 1;
        for (Question question: mQuiz.questions) {
            row1.createCell(col).setCellValue("Question " + col);
            row2.createCell(col).setCellValue(question.question);
            col++;
        }


        //Creating and saving the file

        FileOutputStream file = null;
        try {
            file = new FileOutputStream("quiz.xlsx");
            workbook.write(file);
            file.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Что важно, так это то, что вы включаете jar-файлы для org.apache.poi. Или, как я сделал, добавьте зависимости в pom-файл Maven (или в файл Gradle, например, если вы разрабатываете для Android). Вот мой pom-файл:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mail-excel</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
    </dependencies>

</project>

Надеюсь, это работает для вас (для меня)!

Я загрузил свое решение на GitHub: https://github.com/mwbouwkamp/create-excel

В случае разработки Android добавьте следующую зависимость:

implementation "org.apache.poi:poi:3.17"
implementation "org.apache.poi:poi-ooxml:3.17"
2 голосов
/ 14 апреля 2019

Если вы хотите использовать свое приложение в автономном режиме, то вы можете использовать Apache POI, на который уже ответил MWB, но, поскольку вы упомянули об отправке файла по электронной почте, я предполагаю, что нет ограничений на доступ в Интернет, и поэтому вы можете рассмотреть следующее решение.

Сценарии Google App упрощают автоматизацию процесса извлечения данных из Google Sheets, составляя шаблон электронного письма с указанными данными из Google Sheets.У Google есть SHEETS v4 API , который вы можете интегрировать в свое приложение для Android для работы с листом.Вы можете выполнить весь этот автоматизированный процесс, используя JavaScript в Google App Script или использовать API, если вы предпочитаете интегрировать в свое приложение.

2 голосов
/ 10 апреля 2019

Вы также можете использовать Open CSV.

<dependency> 
    <groupId>com.opencsv</groupId> 
    <artifactId>opencsv</artifactId> 
    <version>4.1</version> 
</dependency> 

Вы можете сослаться на это.

Объект Java в файл CSV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...