Java 如何在android中从外部存储读取excel文件?
我编写了一个代码,将从excel文件(.xls)生成图形,这将非常好地工作,但我必须将文件放在assets文件夹中。现在我想从外部存储器访问文件 XML代码:Java 如何在android中从外部存储读取excel文件?,java,android,excel,Java,Android,Excel,我编写了一个代码,将从excel文件(.xls)生成图形,这将非常好地工作,但我必须将文件放在assets文件夹中。现在我想从外部存储器访问文件 XML代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-a
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.pratiksonigra.graphexcel.MainActivity">
<com.jjoe64.graphview.GraphView
android:layout_width="wrap_content"
android:layout_height="350dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:id="@+id/graph1"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refresh"
android:layout_below="@+id/graph1"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp" />
JAVA代码:
package com.example.pratiksonigra.graphexcel;
import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.BarGraphSeries;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.LineGraphSeries;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class MainActivity extends AppCompatActivity {
LineGraphSeries<DataPoint> series;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Button btn = (Button) findViewById(R.id.button);
final GraphView graph = (GraphView) findViewById(R.id.graph1);
graph.getViewport().setXAxisBoundsManual(true);
graph.getViewport().setYAxisBoundsManual(true);
graph.getViewport().setMinX(0);
graph.getViewport().setMaxX(10);
graph.getViewport().setMaxY(40);
graph.getViewport().setMinY(0);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
graph.removeAllSeries();
AssetManager am = getAssets();
InputStream is = am.open("book.xls");
Workbook wb = Workbook.getWorkbook(is);
Sheet s = wb.getSheet(0);
Cell z = s.getCell(0, 0);
int row = s.getRows();
int col = s.getColumns();
double x, y;
x = 0.0;
y = 0.0;
series = new LineGraphSeries<DataPoint>();
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
z = s.getCell(j, i);
if (j % 2 == 0) {
x = Double.parseDouble(z.getContents());
} else {
y = Double.parseDouble(z.getContents());
}
}
series.appendData(new DataPoint(x, y), true, 15);
}
graph.addSeries(series);
} catch (Exception e) {
}
}
});
}
public boolean onSupportNavigateUp() {
finish();
return true;
}
package com.example.pratiksonigra.graphexcel;
导入android.content.res.AssetManager;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入com.jjoe64.graphview.graphview;
导入com.jjoe64.graphview.series.BarGraphSeries;
导入com.jjoe64.graphview.series.DataPoint;
导入com.jjoe64.graphview.series.LineGraphSeries;
导入java.io.InputStream;
进口jxl.Cell;
进口jxl.Sheet;
导入jxl.工作簿;
公共类MainActivity扩展了AppCompatActivity{
线条系列;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
按钮btn=(按钮)findViewById(R.id.Button);
最终图形视图图形=(图形视图)findViewById(R.id.graph1);
graph.getViewport().setXAxisBoundsManual(true);
graph.getViewport().setYAxisBoundsManual(true);
graph.getViewport().setMinX(0);
graph.getViewport().setMaxX(10);
graph.getViewport().setMaxY(40);
graph.getViewport().setMinY(0);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
试一试{
graph.removeAllSeries();
AssetManager am=getAssets();
InputStream=am.open(“book.xls”);
工作簿wb=Workbook.getWorkbook(is);
表s=wb.getSheet(0);
单元z=s.getCell(0,0);
int row=s.getRows();
int col=s.getColumns();
双x,y;
x=0.0;
y=0.0;
系列=新的LineGraphSeries();
对于(int i=0;i|
}据我所知,您希望从手机内部存储动态选择文件 然后你需要在你的应用程序中安装一个文件浏览器,允许用户浏览和选择文件 请参阅:
希望这有帮助。有问题吗?它工作正常,但我想动态选择文件,而不是将其放入资产文件夹。但问题是什么?只需像现在一样打开(文件)InputStream。