您的位置:首页 > 编程语言 > Java开发

Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题

2015-11-20 22:08 961 查看
问题1:Unable to recognize OLE stream格式的问题要可能是因为给的数据是2010年的数据表后缀为.xlsx,要先转化成2003版的后缀为.xls问题2:Warning:  Property storage name for 5 is empty - setting to Root Entry可能是jxl.jar  不支持Excel 5.0 for Mac,在Mac下导入会出现这个问题。//从Excel中读取数据rowNum行publicstaticdouble[] readExcel(File excelFile,introwNum) throws BiffException,IOException{double[]dataX = newdouble[1000];Workbook rwb =null;Cell cell =null;InputStream stream =new FileInputStream(excelFile);rwb = Workbook.getWorkbo4000ok(stream);//获取指定工作表默认为第一个Sheet sheet =rwb.getSheet(0);//行数,在这里读取从第二行开始读取数据for (inti = 1; i <=rowNum; i++) {String str =new String();//这里选择要读取的数据的列数和行数例如(3,4)说明为第三列第四行,行数都是从0开始计数cell =sheet.getCell(3, i);str =cell.getContents();dataX[i-1] = Double.parseDouble(str);//下面就是为了打印一下数据看一下读取的数据是否正确System.out.println("Data " + (i-1) +" : " +dataX[i-1]);}returndataX;}//将数据存储到Excel表中publicstaticvoid creatExcel(File outFileName,double[]risks) throws BiffException, IOException,WriteException {//获得输出流OutputStream os =new FileOutputStream(outFileName);WritableWorkbookworkbook = Workbook.createWorkbook(os);//在这里指定你存储数据表的名称WritableSheet sheet =workbook.createSheet("Deutsche", 1);Label parameter =new Label(1,1,"1/阿尔法");sheet.addCell(parameter);for (inti = 0; i <risks.length;i++) {Number risk =new Number(1,i+2,risks[i]);sheet.addCell(risk);}//将输出流中数据写入Excel,关闭输出流workbook.write();workbook.close();os.close();}
一些表结构:::
Label formate = new Label(0,0,"数据格式");
sheet.addCell(formate);
Label floats = new Label(1,0,"浮点型");
sheet.addCell(floats);
Label integers = new Label(2,0,"整型");
sheet.addCell(integers);
Label booleans = new Label(3,0,"布尔型");
sheet.addCell(booleans);
Label dates = new Label(4,0,"日期格式");
sheet.addCell(dates);

Label example = new Label(0,1,"数据示例");
sheet.addCell(example);
//浮点数据
Number number = new Number(1,1,3.1415926535);
sheet.addCell(number);
//整形数据
Number ints = new Number(2,1,15042699);
sheet.addCell(ints);
Boolean bools = new Boolean(3,1,true);
sheet.addCell(bools);
//日期型数据
Calendar c = Calendar.getInstance();
Date date = c.getTime();
WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT1);
DateTime dt = new DateTime(4,1,date,cf1);
sheet.addCell(dt);
}
//复杂布局以及样式:::
public class MutiStyleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException {//创建工作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的一页WritableSheet sheet = workbook.createSheet("First Sheet", 0);//构造表头sheet.mergeCells(0, 0, 4, 0);//添加合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一个单元格样式控制对象titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中Label title = new Label(0,0,"JExcelApi支持数据类型详细说明",titleFormate);sheet.setRowView(0, 600, false);//设置第一行的高度sheet.addCell(title);//创建要显示的具体内容WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体color.setColour(Colour.GOLD);//设置字体颜色为金黄色WritableCellFormat colorFormat = new WritableCellFormat(color);Label formate = new Label(0,1,"数据格式",colorFormat);sheet.addCell(formate);Label floats = new Label(1,1,"浮点型");sheet.addCell(floats);Label integers = new Label(2,1,"整型");sheet.addCell(integers);Label booleans = new Label(3,1,"布尔型");sheet.addCell(booleans);Label dates = new Label(4,1,"日期格式");sheet.addCell(dates);Label example = new Label(0,2,"数据示例",colorFormat);sheet.addCell(example);//浮点数据//设置下划线WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);WritableCellFormat greyBackground = new WritableCellFormat(underline);greyBackground.setBackground(Colour.GRAY_25);//设置背景颜色为灰色Number number = new Number(1,2,3.1415926535,greyBackground);sheet.addCell(number);//整形数据WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);Number ints = new Number(2,2,15042699,boldNumberFormate);sheet.addCell(ints);//布尔型数据Boolean bools = new Boolean(3,2,true);sheet.addCell(bools);//日期型数据//设置黑体和下划线WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);Calendar c = Calendar.getInstance();Date date = c.getTime();DateTime dt = new DateTime(4,2,date,boldDateFormate);sheet.addCell(dt);//把创建的内容写入到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: