android操作excel
16lz
2022-04-23
严格来说还是转载,重新写了一下,readXLSX和writeXLS经过测试
import java.io.File;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import android.util.Xml;import org.xmlpull.v1.XmlPullParser;import jxl.Cell;import jxl.CellType;import jxl.DateCell;import jxl.NumberCell;import jxl.Sheet;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class UtilXlsParser { private static final int DEFAULT_SHEET = 0; public static String readXLS(String path) { String str = ""; try { Workbook workbook = Workbook.getWorkbook(new File(path)); Sheet sheet = workbook.getSheet(0); int columnCount = sheet.getColumns(); int rowCount = sheet.getRows(); Cell cell = null; for (int i = 0; i < rowCount; i++) { for (int j = 0; j < columnCount; j++) { cell = sheet.getCell(j, i); String temp2 = ""; if (cell.getType() == CellType.NUMBER) { temp2 = ((NumberCell) cell).getValue() + ""; } else if (cell.getType() == CellType.DATE) { temp2 = "" + ((DateCell) cell).getDate(); } else { temp2 = "" + cell.getContents(); } str = str + " " + temp2; } str += "\n"; } workbook.close(); } catch (Exception e) { } return str; } public static List<ArrayList<String>> readXLSX(String path) { String v = null; List<String> list = new ArrayList<String>(); List<ArrayList<String>> table = new ArrayList<ArrayList<String>>(); try { ZipFile file = new ZipFile(new File(path)); ZipEntry sharedStringXML = file.getEntry("xl/sharedStrings.xml"); InputStream inputStream = file.getInputStream(sharedStringXML); XmlPullParser parser = Xml.newPullParser(); parser.setInput(inputStream, "utf-8"); int event = parser.getEventType(); while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_TAG: String tag = parser.getName(); if (tag.equalsIgnoreCase("t")) { list.add(parser.nextText()); } break; case XmlPullParser.END_TAG: break; default: break; } event = parser.next(); } ZipEntry sheetXML = file.getEntry("xl/worksheets/sheet1.xml"); InputStream inputStreamsheet = file.getInputStream(sheetXML); parser = Xml.newPullParser(); parser.setInput(inputStreamsheet, "utf-8"); event = parser.getEventType(); ArrayList<String> row = null; boolean isText = false; while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_TAG: String tag = parser.getName(); if (tag.equalsIgnoreCase("row")) { row = new ArrayList<String>(); table.add(row); } else if (tag.equalsIgnoreCase("c")) { String t = parser.getAttributeValue(null, "t"); if (t != null) { isText = true; } else { isText = false; } } else if (tag.equalsIgnoreCase("v")) { String cell = parser.nextText(); if (cell != null) { if (isText) { row.add(list.get(Integer.parseInt(cell))); } else { row.add(cell); } } } break; case XmlPullParser.END_TAG: if (parser.getName().equalsIgnoreCase("row") && v != null) { } break; } event = parser.next(); } } catch (Exception e) { e.printStackTrace(); } return table; } public static int writeXLS( String path, List<ArrayList<String>> table ) { File file = createXLS(path); if ( file==null ) { return CREATE_FAIL; } else { return addData( file,table ); } } private static File createXLS(String path) { File file = null; try { file=new File(path); WritableWorkbook book = Workbook.createWorkbook(file); WritableSheet sheet = book.createSheet("task", DEFAULT_SHEET); book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } finally { return file; } } private static int addData( File file, List<ArrayList<String>> table ){ try { Workbook wb = Workbook.getWorkbook(file); WritableWorkbook book= Workbook.createWorkbook(file,wb); WritableSheet sheet = book.getSheet(DEFAULT_SHEET); for(int task=0; task<table.size(); task++) { List<String> attrs = table.get(task); for(int attr=0; attr<attrs.size(); attr++) { Label label = new Label( attr, task, attrs.get(attr) ); sheet.addCell(label); } } book.write(); book.close(); return 0; } catch (Exception e) { e.printStackTrace(); return ADD_DATA_FAIL; } } public static final int CREATE_FAIL = -1; public static final int ADD_DATA_FAIL = -2;}
更多相关文章
- 【2016年度】移动安全研究资料总结
- Android(安卓)Monkey
- android
- Customize "share picture via" menu on Android(安卓)(Android(
- App自动化测试--Android环境搭建
- android studio中AndroidJUnit4单元测试注解错误和recyclerview-
- 一个测试ok的popupwindow demo
- android CTS
- Andriod自动化测试