jar包及代码:http://download.csdn.net/download/eueheuen/10237300
使用:(例子)
1.我们的实体类Bean
public class MyMathBean {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
2.我们的解析工具类
3.Activity使用public class XlsMathUtil { public static ArrayList<MyMathBean> getXlsData(final String xlsName, final int index, Context context){ final ArrayList<MyMathBean> excelBeens = new ArrayList<>(); final AssetManager assetManager = context.getAssets(); try { Workbook workbook = Workbook.getWorkbook(assetManager.open(xlsName)); Sheet sheet = workbook.getSheet(index); int sheetNum = workbook.getNumberOfSheets(); //行 int sheetRows = sheet.getRows(); //列 int sheetColumns = sheet.getColumns(); for (int i = 0; i < sheetRows; i++) { MyMathBean myMathBean = new MyMathBean(); myMathBean.setValue(sheet.getCell(0,i).getContents()+""); excelBeens.add(myMathBean); } Log.d("XlsDataUtil", "excelBeens.size():" + excelBeens.size()); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } return excelBeens; } public static void crateExcel(List<Double>data) { try { // SimpleDateFormat mFormat = new SimpleDateFormat("yyyyMMddHHmmss"); // Date date = new Date(System.currentTimeMillis()); // //图片名称 // String mFileName = "/" + mFormat.format(date) + ".xls"; //图片路径 File tempPath = Environment.getExternalStorageDirectory(); // WritableWorkbook book = Workbook.createWorkbook(new File(tempPath+mFileName)); // 打开文件 WritableWorkbook book = Workbook.createWorkbook(new File(tempPath+"/test.xls")); // 生成名为“第一张工作表”的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet("每段差值", 0); //设置行高,设置第一行高度为100,参数1:行数,参数2:高度 // sheet.setRowView(0, 100); //设置列宽,设置第一列宽度为50,参数1:列数,参数2:宽度 // sheet.setColumnView(0, 50); //合并单元格,参数1:合并的起始列数,参数2:合并的起始行数,参数3:合并的截止列数,参数4:合并的截止行数 //合并第一列第一行到第四列第五行 // sheet.mergeCells(0, 0, 3, 4); //创建字体,参数1:字体样式,参数2:字号,参数3:粗体 WritableFont font = new WritableFont(WritableFont.createFont("楷体"), 11, WritableFont.BOLD); WritableCellFormat format = new WritableCellFormat(font); //设置对齐方式为水平居中 format.setAlignment(Alignment.CENTRE); //设置对齐方式为垂直居中 format.setVerticalAlignment(VerticalAlignment.CENTRE); // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) // 以及单元格内容为baby // Label label = new Label(0, 0, "baby", format); // 将定义好的单元格添加到工作表中 // sheet.addCell(label); // 生成一个保存数字的单元格,必须使用Number的完整包路径,否则有语法歧义。 //单元格位置是第二列,第一行,值为123.456 for (int i = 0; i < data.size(); i++) { jxl.write.Number number = new jxl.write.Number(0, i, data.get(i)); sheet.addCell(number); } //写入数据并关闭 book.write(); book.close(); } catch (WriteException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
public class DoMathActivity extends AppCompatActivity { private ArrayList<MyMathBean>data; private List<Double>dataMath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_do_math); data = new ArrayList<>(); dataMath = new ArrayList<>(); new Thread(new Runnable() { @Override public void run() { data.addAll(XlsMathUtil.getXlsData("androidmath.xls",0,DoMathActivity.this)); runOnUiThread(new Runnable() { @Override public void run() { for (int i = 0; i < data.size(); i++) { dataMath.add(Double.valueOf(data.get(i).getValue())); } //开始运算,先进行分组 List<Double> averageMath = new ArrayList<>(); double sumMath = 0; for (int i = 0; i < dataMath.size(); i++) { sumMath+=dataMath.get(i); if (i%200 == 0){ averageMath.add(sumMath/200); sumMath=0; } } final List<Double> mathValue = new ArrayList<>(); for (int i = 1; i < averageMath.size(); i++) { mathValue.add(averageMath.get(i)-averageMath.get(i-1)); } new Thread(new Runnable() { @Override public void run() { XlsMathUtil.crateExcel(mathValue); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(DoMathActivity.this,"成功",Toast.LENGTH_SHORT).show(); } }); } }).start(); } }); } }).start(); } }