业务需求,为了更加方便的读取导出Excel直接是封装了一个库简单的调一方法即可
这里使用的是jxl和poi。因为之前并不知道jxl不支持03以上的Excel版本,后来做了poi的封装,可以根据自己的需求调用。
一、导入依赖
根据需求导入以下依赖,也可以全部导入
//支持2003以下版本Excel,导入jxl一个就行
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'
//支持2003以上版本Excel,导入以下
implementation 'org.apache.poi:poi:3.17'
implementation 'org.apache.poi:poi-ooxml:3.17'
implementation 'org.apache.xmlbeans:xmlbeans:3.1.0'
implementation 'stax:stax:1.2.0'
implementation 'com.github.GuangNian10000:GnExcle03:v1.5.0'
二、ExcelUtil类介绍
jxl库导出
/**
* context 上下文
* fileName 文件名
* mListData 数据集
* ExcleUrl 存储路径
* */
public static void writeExcel(Context context, String fileName, List<mData>mListData, String ExcleUrl)
jxl库导入(仅支持03以下的读取)
/**
* activity 上下文
* filepath 文件名
* */
/**
* 查询excel表格结果
* */
public static List<mData> QueryUser(Activity activity, Uri filepath)
poi库导出
/**
* context 上下文
* fileName 文件名
* mListData 数据集
* ExcleUrl 存储路径
* */
/**
* 支持03以上
* */
public static void writeExcel03(Context context, String fileName, List<mData>mListData, String ExcleUrl)
poi库导入
/**
* activity 上下文
* filepath 文件名
* */
/**
* 支持查询03以上
* */
public List<mData> mData = new ArrayList<>();
public List<mData> readExcel03(String fileName)
Url转String
/**
* 路径转换
* */
public static String getPath(final Context context, final Uri uri)
数据实体
SheetName就是工作表的Sheet名称
mListData 存储的是每一行的数据集合
public class mData {
public String SheetName="";
public List<List<String>> mListData = new ArrayList<>();
}
三、示例
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");//设置任意类型
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, 1);
}
/**
*处理回调
*/
public List<mData> mDatas= new ArrayList<>();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1&&resultCode == RESULT_OK) {
Uri uri = data.getData();
ExcelUtil excelUtil =new ExcelUtil();
if (uri != null) {
String path = excelUtil.getPath(this, uri);
//根据路径读取Excel内容至实体
mDatas = excelUtil.readExcel03(path);
}
try {
//设置导出路径
String ExcleUrl = Environment.getExternalStorageDirectory().toString() + File.separator + File.separator + "ExcelDirectory";
//导出至指定路径
excelUtil.writeExcel03(this,"测试用",mDatas,ExcleUrl);
} catch (Exception e) {
e.printStackTrace();
Log.d("error",e+"");
}
}
}
四、结
如果需求需要改动的话,那么可以直接复制粘贴ExcelUtil这个类的内容至自己项目中进行更改