在互联网上搜索了很多之后,我找到了一种在Android应用程序内部存储中创建Csv文件的解决方案(不需要SD卡),所以我决定与其他人分享如何在Android中创建Csv文件以及如何将其附加到电子邮件中。
首先,下载Opencsv.jar
库并将其添加到您的Android项目中。 https://sourceforge.net/projects/opencsv/files/opencsv/
直接添加实现(不需要下载.jar
文件)
implementation 'com.opencsv:opencsv:4.6' // Here is opencsv library
或者在Android项目中添加jar文件:
- 将Android Studio文件结构从“Android”更改为“Project”(在项目名称“Android”下方左侧,更改为“Project”)
- 复制
opencsv.jar
文件并粘贴到libs
文件夹中。
- 右键单击
opencsv.jar
文件,然后点击Add as library
。
向Menifest.xml添加权限(如果设备API是23或更高版本,请检查运行时权限)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
打开build.gradle(模块:app)文件并检查添加了以下内容:
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')
}
现在进入编码部分:创建 csv 文件并将数据插入其中。
String csv = (Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyCsvFile.csv");
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);
writer.close();
callRead();
} catch (IOException e) {
e.printStackTrace();
}
}
});
如果您想在 Android 手机上查看您的 csv 文件,请按照以下步骤:
- 前往手机的文件管理器/我的文件。
- 进入内部存储/本地目录,只需滚动即可找到您的 csv 文件。
- 如果您的设备无法打开 csv 文件,请从 Play 商店安装Csv Viewer应用程序。
现在,如果您想将此 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"));
}
});
java.io
类 - 特别是BufferedWriter / BufferedReader。 - KV Prajapati