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

Моя цель - создать файл.csv из таблицы, распечатать отчет. Затем я могу сохранить этот файл.csv в моей SDCard. Я сослался на некоторые вопросы, подобные этому, но они просят предоставить файл jar. Есть ли какой-либо другой способ без jar-файла для интеграции?

Имел интегрировать файл JAR в компонент au.com.bytecode.opencsv.CSVWriter... Что я не могу найти здесь, это логика для записи в новую строку... Помощь?

4 ответа

После поисков по интернету я получил решение создать файл CSV в приложении для Android, во внутреннем хранилище (без SD-карты), поэтому я решил поделиться с другими, как создать файл CSV в Android и как прикрепить его к почте.

Первая загрузка Opencsv.jar библиотека и добавить в свой проект Android. https://sourceforge.net/projects/opencsv/files/opencsv/

Шаги, чтобы добавить файл JAR в Android-проекте:

  1. Измените структуру файла Android Studio Android на Project (вверху слева под именем проекта Android, измените на Project)
  2. копия opencsv.jar файл и вставить в libs папка.
  3. Щелкните правой кнопкой мыши opencsv.jar подать и нажать Add as library,

Добавьте разрешение в Menifest.xml(если API устройства имеет значение 23 или более, проверьте разрешение RunTime)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Откройте build.gradle (Модуль: приложение) и проверьте, что он добавил:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.android.support:recyclerview-v7:26.+'
    testCompile 'junit:junit:4.12'
    implementation files('libs/opencsv-4.1.jar') // Here is opencsv library added to project
}

Теперь часть кода: создание CSV-файла и вставка в него данных.

 String csv = (Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyCsvFile.csv"); // Here csv file name is MyCsvFile.csv


 //by Hiting button csv will create inside phone storage.
 buttonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            CSVWriter writer = null;
                try {
                    writer = new CSVWriter(new FileWriter(csv));

                    List<String[]> data = new ArrayList<String[]>();
                    data.add(new String[]{"Country", "Capital"});
                    data.add(new String[]{"India", "New Delhi"});
                    data.add(new String[]{"United States", "Washington D.C"});
                    data.add(new String[]{"Germany", "Berlin"});

                    writer.writeAll(data); // data is adding to csv 

                    writer.close();
                    callRead();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

Теперь, если вы хотите просмотреть свой CSV-файл внутри Android, выполните следующие действия:

  1. Зайдите в Файловый менеджер / Мои файлы на телефон.
  2. Перейдите во внутреннее хранилище / Local, просто прокрутите, вы получите ваш CSV-файл.
  3. Если файл CSV не открывается на вашем устройстве, установите Csv Viewer из Play Store.

Теперь, если вы хотите прикрепить этот CSV-файл к вашему приложению с вложением

Вот код для вложения файла csv в почту:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent emailIntent = new Intent(Intent.ACTION_SEND);
                emailIntent.setType("text/plain");
                emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"email@example.com"});
                emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
                emailIntent.putExtra(Intent.EXTRA_TEXT, "body text");

                File file = new File(csv);
                Uri uri = Uri.fromFile(file);
                emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
                startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));
            }
        });

Проверьте код ниже, чтобы создать файл CSV. нет необходимости использовать файл JAR.

Вы должны сохранить один CSV-файл на SD-карте.

Образец CSV ФАЙЛА

public void exportEmailInCSV() throws IOException {
        {

            File folder = new File(Environment.getExternalStorageDirectory()
                    + "/Folder");

            boolean var = false;
            if (!folder.exists())
                var = folder.mkdir();

            System.out.println("" + var);


            final String filename = folder.toString() + "/" + "Test.csv";

            // show waiting screen
            CharSequence contentTitle = getString(R.string.app_name);
            final ProgressDialog progDailog = ProgressDialog.show(
                    MailConfiguration.this, contentTitle, "even geduld aub...",
                    true);//please wait
            final Handler handler = new Handler() {
                @Override
                public void handleMessage(Message msg) {




                }
            };

            new Thread() {
                public void run() {
                    try {

                        FileWriter fw = new FileWriter(filename);

                        Cursor cursor = db.selectAll();

                        fw.append("No");
                        fw.append(',');

                        fw.append("code");
                        fw.append(',');

                        fw.append("nr");
                        fw.append(',');

                        fw.append("Orde");
                        fw.append(',');

                        fw.append("Da");
                        fw.append(',');

                        fw.append("Date");
                        fw.append(',');

                        fw.append("Leverancier");
                        fw.append(',');

                        fw.append("Baaln");
                        fw.append(',');

                        fw.append("asd");
                        fw.append(',');

                        fw.append("Kwaliteit");
                        fw.append(',');

                        fw.append("asd");
                        fw.append(',');

                        fw.append('\n');

                        if (cursor.moveToFirst()) {
                            do {
                                fw.append(cursor.getString(0));
                                fw.append(',');

                                fw.append(cursor.getString(1));
                                fw.append(',');

                                fw.append(cursor.getString(2));
                                fw.append(',');

                                fw.append(cursor.getString(3));
                                fw.append(',');

                                fw.append(cursor.getString(4));
                                fw.append(',');

                                fw.append(cursor.getString(5));
                                fw.append(',');

                                fw.append(cursor.getString(6));
                                fw.append(',');

                                fw.append(cursor.getString(7));
                                fw.append(',');

                                fw.append(cursor.getString(8));
                                fw.append(',');

                                fw.append(cursor.getString(9));
                                fw.append(',');

                                fw.append(cursor.getString(10));
                                fw.append(',');

                                fw.append('\n');

                            } while (cursor.moveToNext());
                        }
                        if (cursor != null && !cursor.isClosed()) {
                            cursor.close();
                        }

                        // fw.flush();
                        fw.close();

                    } catch (Exception e) {
                    }
                    handler.sendEmptyMessage(0);
                    progDailog.dismiss();
                }
            }.start();

        }

    }

добавить это разрешение в манифест

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Это будет работать:)

    try {
    String TestString="";

    FileOutputStream fOut = openFileOutput(filename, MODE_WORLD_READABLE);

    OutputStreamWriter osw = new OutputStreamWriter(fOut); 

       // Write the string to the file
     for( i=1; i<total_row; i++)
        {

            for( j=1; j<total_col; j++)
            {
                TestString+=table[i][j].getText().toString();        // to pass in every widget a context of activity (necessary) 
                TestString += " ,";
            }
             TestString+="\n";
        }
     Log.v("the string is",TestString);
     osw.write(TestString);
     osw.flush();
     osw.close();
    }
    catch (IOException ioe) 
      {ioe.printStackTrace();}

в манифесте ты должен был бы написать

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

непосредственно перед тегом приложения

File folder = new File(Environment.getExternalStorageDirectory() + "/Folder");

    boolean var = false;
    if (!folder.exists())
        var = folder.mkdir();
    System.out.println("" + var);
    final String filename = folder.toString() + "/" + "Student.csv";
    System.out.println("Write CSV file:");
    CsvFileWriter.writeCsvFile(filename, id, SName, CName, activityEnterTokenBinding.etTokenNumber.getText().toString(),activityEnterTokenBinding.etAmout.getText().toString());

class CsvFileWriter {

private static final String COMMA_DELIMITER = ",";

private static final String NEW_LINE_SEPARATOR = "\n";


//CSV file header

private static final String FILE_HEADER = "id,firstName,lastName,gender,age";


static void writeCsvFile(String fileName, String id, String SName, String CName, String token, String amount) {

    FileWriter fileWriter = null;

    try {

        fileWriter = new FileWriter(fileName);


        //Write the CSV file header

        fileWriter.append(FILE_HEADER);


        //Add a new line separator after the header

        fileWriter.append(NEW_LINE_SEPARATOR);


        //Write a new student object list to the CSV file


        fileWriter.append(id);

        fileWriter.append(COMMA_DELIMITER);

        fileWriter.append(SName);

        fileWriter.append(COMMA_DELIMITER);

        fileWriter.append(CName);

        fileWriter.append(COMMA_DELIMITER);

        fileWriter.append(token);

        fileWriter.append(COMMA_DELIMITER);

        fileWriter.append(amount);

        fileWriter.append(NEW_LINE_SEPARATOR);
        System.out.println("CSV file was created successfully !!!");

    } catch (Exception e) {

        System.out.println("Error in CsvFileWriter !!!");

        e.printStackTrace();

    } finally {

        try {


            assert fileWriter != null;
            fileWriter.flush();

            fileWriter.close();

        } catch (IOException e) {

            System.out.println("Error while flushing/closing fileWriter !!!");

            e.printStackTrace();

        }

    }

}

}

Другие вопросы по тегам