我的目标是从表格创建一个 .csv 文件,以打印报告。然后我可以将此 .csv 文件存储到我的 sdCard 中。我提到了一些与此类似的问题,但他们要求提供一个 jar 文件。有没有其他方法可以不集成jar文件?
已在组件 au.com.bytecode.opencsv.CSVWriter 中集成了一个 jar 文件...我在这里找不到的是写入新行的逻辑...帮助?
我的目标是从表格创建一个 .csv 文件,以打印报告。然后我可以将此 .csv 文件存储到我的 sdCard 中。我提到了一些与此类似的问题,但他们要求提供一个 jar 文件。有没有其他方法可以不集成jar文件?
已在组件 au.com.bytecode.opencsv.CSVWriter 中集成了一个 jar 文件...我在这里找不到的是写入新行的逻辑...帮助?
在互联网上搜索了很多之后,我得到了在 android App、内部存储(没有 SD 卡)中创建 Csv 文件的解决方案,所以我决定与其他人分享如何在 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文件:
opencsv.jar
文件并粘贴到libs
文件夹中。opencsv.jar
文件并点击Add as library
.向 Menifest.xml 添加权限(如果设备 API 为 23 或更高,请检查运行时权限)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
打开build.gradle (Module: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') // Here is opencsv library added to project when using .jar
}
现在编码部分:创建 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();
}
}
});
现在,如果您想在 android 中查看您的 csv 文件,请按照以下步骤操作:
现在,如果您想将此 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-CARD 中。
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" />
就在应用程序标签之前