问题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行

public static double[] readExcel(File excelFile,int rowNum) throws BiffException,IOException{

double[] dataX = new double[1000];

Workbook rwb = null;

Cell cell = null;

InputStream stream = new FileInputStream(excelFile);

rwb = Workbook.getWorkbook(stream);

//获取指定工作表默认为第一个

Sheet sheet = rwb.getSheet(0);

//行数,在这里读取从第二行开始读取数据

for (int i = 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]);

}

return dataX;

}

//将数据存储到Excel表中

public static void creatExcel(File outFileName,double[] risks) throws BiffException, IOException,WriteException {

//获得输出流

OutputStream os = new FileOutputStream(outFileName);

WritableWorkbook workbook = Workbook.createWorkbook(os);

//在这里指定你存储数据表的名称

WritableSheet sheet = workbook.createSheet("Deutsche", 1);

Label parameter = new Label(1,1,"1/阿尔法");

sheet.addCell(parameter);

for (int i = 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(); }

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

  1. (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)

    1.引子 (1)读取 Jxl工具比较强大,可以方便地实现Excel表的读取和写入.另一款工具Poi也具有相似的功能,并且功能更多,运用也相对复杂.Poi读取Excel表内容时,需要先判断其内容格式,如 ...

  2. Excel表数据导入Sql Server数据库中

    Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...

  3. Excel表数据导入数据库表中

    ***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...

  4. 如何实现MySQL表数据随机读取?从mysql表中读取随机数据

    文章转自 http://blog.efbase.org/2006/10/16/244/如何实现MySQL表数据随机读取?从mysql表中读取随机数据?以前在群里讨论过这个问题,比较的有意思.mysql ...

  5. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

  6. java 操作Excel表 创建 查看 修改

    需要用到jxl.jar包  修改有两种方法一种是jxl的  另一种需要apache.poi包 package excelChuLi; import java.io.File; import java. ...

  7. Excel表单的读取与处理 PHPExcel与Apache POI

    近日,连续遇到需要对Excel表单内容进行读取的需求.一个是在php环境下,一个是在java环境下.这里简要记录这两种环境,利用第三方提供的函数库对Excel进行处理的方法. d0710 : Fini ...

  8. java导入Excel表格数据

    首先导入Excel数据需要几样东西 第一需要两个依赖包,这里直接是在pom注入依赖 <!--excel--> <dependency> <groupId>org.a ...

  9. java 导出Excel 大数据量,自己经验总结!(二)

    在上一次的基础上加上了样式,以及中文列名 package com.tommy.fundation.util; import java.io.OutputStream; import java.util ...

随机推荐

  1. HihoCoder 1504 : 骑士游历 (矩阵乘法)

    描述 在8x8的国际象棋棋盘上给定一只骑士(俗称“马”)棋子的位置(R, C),小Hi想知道从(R, C)开始移动N步一共有多少种不同的走法. 输入 第一行包含三个整数,N,R和C. 对于40%的数据 ...

  2. object_test.py

    #方法,属性,私有化加双下划线 ''' __a 从外部无法访问,但是类的内部可以访问.实际上还是能在类外访问这些私有方法,尽管不应该这么做:s._A__a 如果不需要使用这种方法但是又不行让其他对象不 ...

  3. sql语句之连表操作

    内连接 select * from employee inner join department on employee.dep_id = department.id 左连接 在内连接的基础上保留左表 ...

  4. Flutter实战视频-移动电商-48.详细页_详情和评论的切换

    48.详细页_详情和评论的切换 增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/m ...

  5. vuex实现购物车功能

    购物车功能描述: 1. 点击+,-按钮,“已选:xx件”随之增减 2. checkbox选中时,当前项的已选数量增加到头部“已选择xx件”中,未选中时数量不计入 代码: 服务端 node+koa+ko ...

  6. Lightoj1014【基础题】

    题意: 有C个人,安排了P个吃的,每个人会吃Q个吃的,最后留下L个吃的:求所有可能的Q,从小到大输出,要保证Q>L; 思路: 其实就是求出P-L的所有数的约数,然后这个约数>L的话就满足: ...

  7. unity关于StartCoroutine的简单线程使用

    StartCoroutine在unity3d的帮助中叫做协程,意思就是启动一个辅助的线程. 在C#中直接有Thread这个线程,但是在unity中有些元素是不能操作的.这个时候可以使用协程来完成. 使 ...

  8. Node.js 关于module的一些认知

    module是一个对象,在Node环境中运行js脚本,module会自动添加,并且系统会将函数封装到另一个函数中 例如: var module = { id: '.', exports: {} }; ...

  9. 【OpenJ_Bailian - 2797】最短前缀(贪心)

    最短前缀 Descriptions: 一个字符串的前缀是从该字符串的第一个字符起始的一个子串.例如 "carbon"的字串是: "c", "ca&qu ...

  10. 理解Bitcode:一种中间代码

    原文网址: http://www.cocoachina.com/ios/20150818/13078.html 今天试着用Xcode 7 beta 3在真机(iOS 8.3)上运行一下我们的工程,结果 ...