如何在Android中打开CSV文件?

5
我在SD卡中创建了一个.csv文件。现在我想打开这个文件,但是无法做到。
如何打开一个.csv文件?

也许这篇帖子能帮到你。https://dev59.com/jW435IYBdhLWcg3wigkk - Mudassir
可能是重复的问题:如何在Android应用程序中解析CSV文件? - Lie Ryan
由于它基本上只是另一种形式的文本文件,因此这个有关在Android上打开文本文件的一般问题可能会有所帮助。 - G. Putnam
由于它基本上只是另一种文本文件的形式,这个有关在Android上打开文本文件的通用问题可能会有所帮助。 - undefined
4个回答


0

0
首先,在Android Studio中设计您的XML,然后粘贴此行代码并检查您的应用程序。如果有任何错误,您将发送错误行或任何反馈。
    csvText=findViewById(R.id.csvtext);
    select=findViewById(R.id.button);

    select.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //imp step
            if(SDK_INT >= Build.VERSION_CODES.R)
            {
                if(Environment.isExternalStorageManager()){
                    //choosing csv file
                    Intent intent=new Intent();
                    intent.setType("*/*");
                    intent.putExtra(Intent.EXTRA_AUTO_LAUNCH_SINGLE_CHOICE,true);
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent,"Select CSV File "),101);
                }
                else{
                    //getting permission from user
                    Intent intent=new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
                    Uri uri=Uri.fromParts("package",getPackageName(),null);
                    startActivity(intent);
                }
            }
            else{
                // for below android 11

                Intent intent=new Intent();
                intent.setType("*/*");
                intent.putExtra(Intent.EXTRA_AUTO_LAUNCH_SINGLE_CHOICE,true);
                intent.setAction(Intent.ACTION_GET_CONTENT);

                ActivityCompat.requestPermissions(MainActivity.this,new String[] {WRITE_EXTERNAL_STORAGE},102);


            }
        }
    });
}


Uri fileuri;

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==101 && data!=null){
        fileuri=data.getData();
        csvText.setText(readCSVFile(getFilePathFromUri(fileuri)));
    }
}


// this method is used for getting file path from uri
public String getFilePathFromUri(Uri uri){
    String[] filename1;
    String fn;
    String filepath=uri.getPath();
    String filePath1[]=filepath.split(":");
    filename1 =filepath.split("/");
    fn=filename1[filename1.length-1];
    return Environment.getExternalStorageDirectory().getPath()+"/"+filePath1[1];
}

//reading file data

public String readCSVFile(String path){
    String filedata = null;
    File file=new File(path);
    try {

        Scanner scanner=new Scanner(file);
        while (scanner.hasNextLine()){

            String line=scanner.nextLine();
            String [] splited=line.split(",");
            String row="";
            for (String s:splited){

                row=row+s+"  ";

            }

            filedata=filedata+row+"\n";

        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Toast.makeText(MainActivity.this,"Error",Toast.LENGTH_SHORT).show();
    }

    return filedata;

}

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接