Android使用poi方法生成execl表格遇到问题求助~

LeoHirasawa 2015-07-10 11:28:41
先跪求大神帮我解决一下这个问题,已经困扰了我两天,实在是进行不下去啦~~跪谢。。

(前提是我的jar包已经导入工程了)
安卓里采用poi方法想生成execl表格,我先是建立了一个普通JAVA工程,用来测试结果能生成execl表格并且数据正确,代码如下:

student类

public class Student
{
//private int sid;
private String name;
private String age;

public Student()
{
//super();
}

public Student( String name, String age)
{
//super();
//this.sid = sid;
this.name = name;
this.age = age;
}

//public int getSid()
//{
//return sid;
//}

//public void setSid(int sid)
//{
// this.sid = sid;
//}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public String getAge()
{
return age;
}

public void setAge(String age)
{
this.age = age;
}

@Override
public String toString()
{
return ";name=" + name + ";age=" + age;
}
}



实现生成excel表格的类,自带main函数

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class CreateSimpleExcelToDisk
{
/**
* @功能:手工构建一个简单格式的Excel
*/
private static List<Student> getStudent() throws Exception
{
List list = new ArrayList();
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");

Student user1 = new Student("1", "张三");
Student user2 = new Student("2", "李四");
Student user3 = new Student("3", "王五");
list.add(user1);
list.add(user2);
list.add(user3);

return list;
}

public static void main(String[] args) throws Exception
{
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("学生表一");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("学号");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("年龄");
cell.setCellStyle(style);
cell = row.createCell((short) 3);
cell.setCellValue("生日");
cell.setCellStyle(style);

// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
List list = CreateSimpleExcelToDisk.getStudent();

for (int i = 0; i < list.size(); i++)
{
row = sheet.createRow((int) i + 1);
Student stu = (Student) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(stu.getName());
row.createCell((short) 1).setCellValue(stu.getName());
row.createCell((short) 2).setCellValue(stu.getAge());
// cell = row.createCell((short) 3);
// cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu.getName()));
}
// 第六步,将文件存到指定位置
try
{
FileOutputStream fout = new FileOutputStream("D:/students.xls");
wb.write(fout);
fout.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}


效果截图:


/////////////////////////////////////////////////////////////////////////////////////////////////////////分割线
但是当我把这个类改成一个功能类在安卓程序中调用时,
却一直无法实现功能。
经过调试发现,在

// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("学生表一");

这句代码执行时,会报错如下:
07-09 23:01:54.433: E/dalvikvm(1510): Could not find class 'java.awt.font.FontRenderContext', referenced from method org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn

下面贴出android按钮监听器(点击按钮后执行)内的代码和对应的功能类代码。


private OnClickListener listener_execl=new OnClickListener()
{
public void onClick(View v)
{
CreateSimpleExcelToDisk disk = new CreateSimpleExcelToDisk();
try {
Toast.makeText(Chapter22Test1.this, "点击之前", Toast.LENGTH_SHORT).show();
disk.main_todisk();
Toast.makeText(Chapter22Test1.this, "点击成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};



package com.iaiai.activity;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import android.util.Log;

import com.szy.sqlite.model.Student;

public class CreateSimpleExcelToDisk
{
/**
* @功能:手工构建一个简单格式的Excel
*/
private List<Student> getStudent() throws Exception
{
List list = new ArrayList();
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");

Student user1 = new Student("1", "张三");
Student user2 = new Student("2", "李四");
Student user3 = new Student("3", "王五");
list.add(user1);
list.add(user2);
list.add(user3);

return list;
}

public void main_todisk() throws Exception
{

Log.i("TAG", "jinlail");

// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("1");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("id");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("name");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("age");
cell.setCellStyle(style);
cell = row.createCell((short) 3);
cell.setCellValue("birthday");
cell.setCellStyle(style);

// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
List list = getStudent();

for (int i = 0; i < list.size(); i++)
{
row = sheet.createRow((int) i + 1);
Student stu = (Student) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(stu.getName());
row.createCell((short) 1).setCellValue(stu.getName());
row.createCell((short) 2).setCellValue(stu.getAge());
// cell = row.createCell((short) 3);
// cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu.getName()));
}
// 第六步,将文件存到指定位置
try
{
FileOutputStream fout = new FileOutputStream("D:/students.xls");
wb.write(fout);
fout.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}


student类没有变。

再次请求大神们帮我看看到到底问题出在哪里呢
...全文
258 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
klenb 2016-08-18
  • 打赏
  • 举报
回复
java.awt 和 java.swing 是和系统底层相关的, google并没有把使用整个java库,特别这种设计到操作系统的。所以找不到awt包很正常
whliyujiajia 2015-07-11
  • 打赏
  • 举报
回复
遇到同样的问题
LeoHirasawa 2015-07-10
  • 打赏
  • 举报
回复
下午换了一个新版本的poi jar包,结果不报错了 但是仍然建不出来表。。
LeoHirasawa 2015-07-10
  • 打赏
  • 举报
回复
等了一天了还是没人。。。求大神啊。。
LeoHirasawa 2015-07-10
  • 打赏
  • 举报
回复
再顶。。。真的没人吗
LeoHirasawa 2015-07-10
  • 打赏
  • 举报
回复
自己顶一下,跪求啊

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧