Ⅰ java poi怎麼導入excel數據
package poi;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcel001 {
public static void main(String[] args) {
readXml("D:/test.xlsx");
System.out.println("-------------");
readXml("d:/test2.xls");
}
public static void readXml(String fileName){
boolean isE2007 = false; //判斷是否是excel2007格式
if(fileName.endsWith("xlsx"))
isE2007 = true;
try {
InputStream input = new FileInputStream(fileName); //建立輸入流
Workbook wb = null;
//根據文件格式(2003或者2007)來初始化
if(isE2007)
wb = new XSSFWorkbook(input);
else
wb = new HSSFWorkbook(input);
Sheet sheet = wb.getSheetAt(0); //獲得第一個表單
Iterator<Row> rows = sheet.rowIterator(); //獲得第一個表單的迭代器
while (rows.hasNext()) {
Row row = rows.next(); //獲得行數據
System.out.println("Row #" + row.getRowNum()); //獲得行號從0開始
Iterator<Cell> cells = row.cellIterator(); //獲得第一行的迭代器
while (cells.hasNext()) {
Cell cell = cells.next();
System.out.println("Cell #" + cell.getColumnIndex());
switch (cell.getCellType()) { //根據cell中的類型來輸出數據
case HSSFCell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
System.out.println(cell.getCellFormula());
break;
default:
System.out.println("unsuported sell type");
break;
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
參考自http://blog.csdn.net/shuwei003/article/details/6741649
Ⅱ java excel poi 怎麼導入
1、下載poi相關jar,maven的集成如下:(把${poi.version}替換成你要的版本)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>
2、根據poi相關api讀取sheet、row、cell,獲得excel的數據:
封裝row的對象,即每一行數據為一個對象,每個cell為對象里的一個屬性,
整個sheet的數據裝進集合里;
3、處理數據,可以對數據進行驗證或其他操作;
4、寫資料庫操作。
Ⅲ java用poi實現將資料庫裡面的數據導入已經存在的excel模板中。最好有實例參考,謝謝。
這是我之前寫的用反射的將數據導入到excel中的類,具體實現,代碼里有注釋。不知道樓主持久層用的什麼東東?如果是its,建議使用ibatis的rowhandler,導出部分的實現,和下面這個類也很類似,樓主自己改改吧,這樣性能會高一些,尤其是在你處理的要寫入文件的數據,比較多的情況下。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import cn.emag.framework.Util.LogName;
/**
* 導出成excel文件工具類
*/
public class Export2ExcelUtil
{
private static Logger log = Logger.getLogger(LogName.ERROR_LOG);
private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* 生成excel文件存入伺服器
* @param importdata 待導入excle文件的內容
* @param header excel」表頭「部分內容
* @param attr 與」表頭「順序對應的importdata中的成員變數名,首字母大寫
* @param fileName 導入到目標文件中,完整路徑
*/
public static void export2exc(List<Object> importdata,String[] header,String[] attr, String fileName)
{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
// 創建頭文件
writeHeader(header,sheet,wb);
// 創建文件內容
int i=1;
HSSFRow row;
for(Object object:importdata)
{
row = sheet.createRow(i++);
writeBody(object, attr, row);
}
// 寫入文件
OutputStream os = null;
try
{
os = new FileOutputStream(fileName);
wb.write(os);
}
catch (Exception e)
{
log.error("寫入文件失敗",e);
}
finally
{
try
{
os.close();
}
catch (IOException e)
{
log.error("寫入文件失敗",e);
}
}
}
/**
* 創建文件頭
* @param header 頭內容
* @param sheet
*/
public static void writeHeader(String[] header,HSSFSheet sheet,HSSFWorkbook wb)
{
HSSFRow row = sheet.createRow(0);
HSSFCellStyle cellstype = wb.createCellStyle();
cellstype = wb.createCellStyle();
cellstype.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
cellstype.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellstype.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellstype.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFCell cell;
HSSFRichTextString str;
int n = 0;
for (String head : header)
{
sheet.setColumnWidth(n, 4000);
cell = row.createCell(n++);
cell.setCellStyle(cellstype);
str = new HSSFRichTextString(head);
cell.setCellValue(str);
}
}
/**
* 寫行內容
* @param object
* @param atrr
* @param row
* @throws Exception
*/
public static void writeBody(Object object,String[] attr,HSSFRow row)
{
int n = 0;
HSSFCell cell;
Method method;
HSSFRichTextString str;
String content=null;
for(String atr : attr)
{
cell = row.createCell(n++);
try
{
method = object.getClass().getMethod("get"+atr);
Object o = method.invoke(object);
if(null!=o)
{
if(o instanceof Date)
{
content=format.format(o);
}else
{
content = String.valueOf( method.invoke(object));
}
}else
{
content=null;
}
}
catch (SecurityException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (IllegalArgumentException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (NoSuchMethodException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (IllegalAccessException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (InvocationTargetException e)
{
log.error("excel寫入單元格內容失敗",e);
}
str = new HSSFRichTextString(content);
cell.setCellValue(str);
}
}
}
Ⅳ poi導入excel
方法/步驟
一,ExcelUtils工具類(也就是解析EXCEL文件,判斷EXCEL的類型以及數據的類型)
importjava.io.IOException;
importjava.io.InputStream;
importjava.math.BigDecimal;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.List;
importorg.apache.poi.hssf.usermodel.HSSFDateUtil;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtils {
privatefinalstaticString excel2003L =「.xls」;// 2003-版本的excel
privatefinalstaticString excel2007U =「.xlsx」;// 2007 +版本的excel
/ **
*描述:獲取IO流中的數據,組裝成List <List <Object>對象
* @param in,fileName
* @返回
* @throws IOException
* /
publicList <List <Object> getBankListByExcel(InputStream in,String fileName)throwsException {
列表<List <Object> list =null;
//創建的Excel工作薄
Workbook work =this.getWorkbook(in,fileName);
if(null== work){
拋出新的異常(「創建Excel工作薄為空!」);
}
Sheet sheet =null;//頁數
行row =null;//行數
Cell cell =null;//列數
list =newArrayList <List <Object >>();
//遍歷的Excel中所有的片
for(inti =0; i <work.getNumberOfSheets(); i ++){
sheet = work.getSheetAt(i);
if(sheet ==null){continue;}
//遍歷當前片中的所有行
for(intj = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j ++){
row = sheet.getRow(j);
if(row ==null|| row.getFirstCellNum()== j){continue;}
//遍歷所有的列
列表<Object> li =newArrayList <Object>();
for(inty = row.getFirstCellNum(); y <row.getLastCellNum(); y ++){
cell = row.getCell(y);
li.add(this.getValue(cell));
}
list.add(LI);
}
}
return 單
}
/ **
*描述:根據文件後綴,自適應上傳文件的版本
* @param inStr,fileName
* @返回
* @throws異常
* /
publicWorkbook getWorkbook(InputStream inStr,String fileName)throwsException {
工作簿wb =null;
String fileType = fileName.substring(fileName.lastIndexOf(「。」));
if(excel2003L.equals(fileType)){
wb =newHSSFWorkbook(inStr);// 2003-
}elseif(excel2007U.equals(fileType)){
wb =newXSSFWorkbook(inStr);// 2007 +
}else{
拋出新的異常(「解析的文件格式有誤!」);
}
返回wb;
}
/ **
*描述:對表格中數值進行格式化
* @param單元格
* @返回
* /
//解決擅長類型問題,獲得數值
publicString getValue(Cell cell){
String value =「」;
if(null== cell){
返回值
}
switch(cell.getCellType()){
//數值型
案例Cell.CELL_TYPE_NUMERIC:
if(HSSFDateUtil.isCellDateFormatted(cell)){
//如果是date類型則,獲取該單元格的日期值
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format =newSimpleDateFormat(「yyyy-MM-dd」);
value = format.format(date);;
}else{//純數字
BigDecimal big =newBigDecimal(cell.getNumericCellValue());
value = big.toString();
//解決1234.0去掉後面的.0
if(null!= value &&!「」.equals(value.trim())){
String [] item = value.split(「[。]」);
if(1<item.length &&「0」.equals(item [1])){
value = item [0];
}
}
}
break;
//字元串類型
案例Cell.CELL_TYPE_STRING:
value = cell.getStringCellValue()。toString();
break;
//公式類型
案例Cell.CELL_TYPE_FORMULA:
//讀公式計算值
value = String.valueOf(cell.getNumericCellValue());
if(value.equals(「NaN」)){//如果獲取的數據值為非法值,則轉換為獲取字元串
value = cell.getStringCellValue()。toString();
}
break;
//布爾類型
案例Cell.CELL_TYPE_BOOLEAN:
value =「」+ cell.getBooleanCellValue();
break;
默認值:
value = cell.getStringCellValue()。toString();
}
if(「null」.endsWith(value.trim())){
value =「」;
}
返回值
}
}
二,定義兩個實體類,一個是對於的Excel文件,解析它的數據(ExcelBean),另一個是導入資料庫表的實體類(人)
ExcelBean.java
<strong> <span style =「font-size:18px;」>importorg.apache.poi.xssf.usermodel.XSSFCellStyle;
公共類ExcelBean實現java.io.Serializable {
privateString headTextName;//列頭(標題)名
privateString propertyName;//對應欄位名
私有整數列;//合並單元格數
私人XSSFCellStyle cellStyle;
publicExcelBean(){
}
publicExcelBean(String headTextName,String propertyName){
這個.headTextName = headTextName;
這個.propertyName = propertyName;
}
publicExcelBean(String headTextName,String propertyName,Integer cols){
super();
這個.headTextName = headTextName;
這個.propertyName = propertyName;
這個.cols = cols;
}
publicString getHeadTextName(){
returnheadTextName;
}
publicvoidsetHeadTextName(String headTextName){
這個.headTextName = headTextName;
}
publicString getPropertyName(){
returnpropertyName;
}
publicvoidsetPropertyName(String propertyName){
這個.propertyName = propertyName;
}
publicInteger getCols(){
返回列;
}
公共無效setCols(Integer cols){
這個.cols = cols;
}
上市XSSFCellStyle getCellStyle(){
返回cellStyle;
}
公共無效setCellStyle(XSSFCellStyle cellStyle){
這個.cellStyle = cellStyle;
}
} </ span> </ strong>
people.java
importjava.util.Date;
公共課人
私有整數id
privateString userName;
私人字元串密碼;
私人整數年齡;
私人日期;
publicInteger getId(){
返回id
}
publicvoidsetId(Integer id){
這個.id = id;
}
publicString getUserName(){
returnuserName;
}
publicvoidsetUserName(String userName){
這個.userName = userName ==null?null:userName.trim();
}
publicString getPassword(){
返回密碼
}
publicvoidsetPassword(String password){
這個.password = password ==null?null:password.trim();
}
publicInteger getAge(){
回歸年齡
}
publicvoidsetAge(Integer age){
這個.age = age
}
publicDate getDate(){
退貨日期
}
publicvoidsetDate(Date date){
這個.date = date
}
}
Ⅳ poi如何去寫入excel文件
直接全部在action裡面寫的,這個就不多說了,直接上代碼:
public String executeExcel() throws Exception{ String realPath = ServletActionContext.getServletContext().getRealPath("/fileupload");
System.out.println(fileFileName);
String filePath = "";
if(this.file!=null){
File saveFile = new File(new File(realPath),this.fileFileName);
filePath = realPath+"\\"+this.fileFileName;
System.out.println(filePath);
if(!saveFile.getParentFile().exists()){
saveFile.getParentFile().mkdirs(); }
FileUtils.File(file, saveFile); }
this.exlToDB(filePath);
ActionContext.getContext().put("message","導入成功");
return "success"; } //讀取excel2007,並把數據插入資料庫
public void exlToDB(String filePath){ boolean flag = true;
AllKpi akpi = new AllKpi(); try { // 文件流指向excel文件
FileInputStream fin=new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(fin);// 創建工作薄
XSSFSheet sheet = workbook.getSheetAt(0);// 得到工作表
XSSFRow row = null;// 對應excel的行
XSSFCell cell = null;// 對應excel的列
int totalRow = sheet.getLastRowNum();// 得到excel的總記錄條數
System.out.println(totalRow); // 以下的欄位一一對應資料庫表的欄位
float idd = 0.0f;
String id = "";
String Name = "";
String DEPT_NAME = "";
String Weight = "";
<span></span>String ALGORITHM = "";
String text = " ";
//String sql = "insert into DSP_TJ_KPI values(DSP_TJ_KPI_SEQ.nextval,?,?,?,'無',?)";
for (int i = 1; i <= totalRow; i++) {
row = sheet.getRow(i);
//System.out.println(row.getCell(0).toString());
if(row.getCell(0) != null && !"".equals(row.getCell(0)) && row.getCell(1) != null && !"".equals(row.getCell(1)) && row.getCell(2) != null && !"".equals(row.getCell(2)) && row.getCell(3) != null && !"".equals(row.getCell(3))){
cell = row.getCell((short) 0);
Name = cell.toString();
System.out.println(Name);
cell = row.getCell((short) 1);
Weight = cell.toString();
System.out.println(Weight);
cell = row.getCell((short) 2);
DEPT_NAME = cell.toString();
System.out.println(DEPT_NAME);
cell = row.getCell((short) 3);
ALGORITHM = cell.toString();
System.out.println(ALGORITHM);
akpi.setAllkpiName(Name);
akpi.setAllkpiDeptName(DEPT_NAME);
akpi.setAllkpiWeight(Weight);
akpi.setAlgorithm(ALGORITHM);
akpi.setText(text);
allKpiService.addAllKpi(akpi); //以下注釋代碼為連接jdbc測試代碼塊
/*pst = con.prepareStatement(sql);
//pst.setString(1, student_id);
pst.setString
(1, DEPT_NAME);
pst.setString
(2, Name);
pst.setString
(3, Weight);
<span></span>pst.setString(4, ALGORITHM);
pst.execute();*/
System.out.println("preparestatement successful"); } }
/*pst.close();
con.close();*/
fin.close(); } catch (FileNotFoundException e)
{
flag = false;
e.printStackTrace();
}
catch (IOException ex)
{
flag = false;
ex.printStackTrace();
}
Ⅵ poi導入excel時,excel不是標準的excel文件,導致報錯,需要另存為下才可以導入,求解決辦法
你可考慮過把JXL和POI配合起來使用?即:用JXL從非標準的EXCEL里讀取數據然後用POI來另存為EXCEL,然後再用POI來使用它
Ⅶ 如何使用POI對Excel表進行導入和導出
導入POI的jar包
新建一個項目,在根目錄在新建一個lib文件夾,將jar包復制粘貼到lib文件夾後,右鍵將其添加到項目的build path中,最後的結果如圖所示:
2
編寫java類,新建一個實體類,比如我們要導出資料庫的有關電腦的信息,那麼就建一個Computer實體類,代碼如下:
package com.qiang.poi;
public class Computer {
private int id;
private String name;
private String description;
private double price;
private double credit;
public int getId() {
return id;
}
public Computer(int id, String name, String description, double price,
double credit) {
super();
this.id = id;
this.name = name;
this.description = description;
this.price = price;
this.credit = credit;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getCredit() {
return credit;
}
public void setCredit(double credit) {
this.credit = credit;
}
}
3
新建一個寫入excel的方法,如write2excel,參數可以後面邊寫邊決定(站在一個不熟悉POI的角度)
public static void write2Excel(){}
4
創建操作Excel的HSSFWorkbook對象
HSSFWorkbook excel= new HSSFWorkbook();
創建HSSFSheet對象
Excel中的一個sheet(工作表)對應著java中的一個HSSFSheet對象,利用HSSFWorkbook對象可以創建一個HSSFSheet對象
如:創建一個sheet名為computer的excel
HSSFSheet sheet = excel.createSheet("computer");
創建第一行標題信息的HSSFRow對象
我們都知道excel是表格,即由一行一行組成的,那麼這一行在java類中就是一個HSSFRow對象,我們通過HSSFSheet對象就可以創建HSSFRow對象
如:創建表格中的第一行(我們常用來做標題的行) HSSFRow firstRow = sheet.createRow(0); 注意下標從0開始
創建標題行中的HSSFCell數組
當然,excel中每一行是由若干個單元格,我們常稱為cell,它對應著java中的HSSFCell對象
如:創建5個單元格 HSSFCell cells[] = new HSSFCell[5];
//假設我們一行有五列數據
創建標題數據,並通過HSSFCell對象的setCellValue()方法對每個單元格進行賦值
既然單元格都准備好了,那最後是不是該填充數據了呀。對的,沒錯。填充數據之前,得把數據准備好吧,
數據:String[] titles = new String[]{"id","name","description","price","credit"};
插入一句話: 在這個時代,能讓機器做的,盡量不讓人來做,記住這句話。
好的,繼續。現在就通過for循環來填充第一行標題的數據
for (int i = 0; i < 5; i++) {
cells[0] = firstRow.createCell(i);
cells[0].setCellValue(titles[i]);
}
數據分析
第一行標題欄創建完畢後,就准備填充我們要寫入的數據吧,在java中,面向對象給我們帶來的好處在這里正好體現了,沒錯
把要填寫的數據封裝在對象中,即一行就是一個對象,n行就是一個對象列表嘛,好的,走起。
創建對象Computer,私有屬性id,name,description,price,credit,以及各屬性的setter和getter方法,如步驟二所示。
假設我們要寫入excel中的數據從資料庫查詢出來的,最後就生成了一個List<Computer>對象computers
數據寫入
具體數據有了,又該讓機器幫我們幹活了,向excel中寫入數據。
for (int i = 0; i < computers.size(); i++) {
HSSFRow row = sheet.createRow(i + 1);
Computer computer = computers.get(i);
HSSFCell cell = row.createCell(0);
cell.setCellValue(computer.getId());
cell = row.createCell(1);
cell.setCellValue(computer.getName());
cell = row.createCell(2);
cell.setCellValue(computer.getDescription());
cell = row.createCell(3);
cell.setCellValue(computer.getPrice());
cell = row.createCell(4);
cell.setCellValue(computer.getCredit());
}
將數據真正的寫入excel文件中
做到這里,數據都寫好了,最後就是把HSSFWorkbook對象excel寫入文件中了。
OutputStream out = null;
try {
out = new FileOutputStream(file);
excel.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("數據已經寫入excel"); //溫馨提示
看看我的main方法吧
public static void main(String[] args) throws IOException {
File file = new File("test1.xls");
if(!file.exists()){
file.createNewFile();
}
List<Computer> computers = new ArrayList<Computer>();
computers.add(new Computer(1,"宏碁","筆記本電腦",3333,9.0));
computers.add(new Computer(2,"蘋果","筆記本電腦,一體機",8888,9.6));
computers.add(new Computer(3,"聯想","筆記本電腦,台式機",4444,9.3));
computers.add(new Computer(4, "華碩", "筆記本電腦,平板電腦",3555,8.6));
computers.add(new Computer(5, "註解", "以上價格均為捏造,如有雷同,純屬巧合", 1.0, 9.9));
write2excel(computers, file);
}
工程目錄及執行main方法後的test1.xls數據展示
源碼分享,computer就不貼了
package com.qiang.poi;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ReadExcel {
public static void main(String[] args) throws IOException {
File file = new File("test1.xls");
if(!file.exists()){
file.createNewFile();
}
List<Computer> computers = new ArrayList<Computer>();
computers.add(new Computer(1,"宏碁","筆記本電腦",3333,9.0));
computers.add(new Computer(2,"蘋果","筆記本電腦,一體機",8888,9.6));
computers.add(new Computer(3,"聯想","筆記本電腦,台式機",4444,9.3));
computers.add(new Computer(4, "華碩", "筆記本電腦,平板電腦",3555,8.6));
computers.add(new Computer(5, "註解", "以上價格均為捏造,如有雷同,純屬巧合", 1.0, 9.9));
write2excel(computers, file);
}
public static void write2excel(List<Computer> computers,File file) {
HSSFWorkbook excel = new HSSFWorkbook();
HSSFSheet sheet = excel.createSheet("computer");
HSSFRow firstRow = sheet.createRow(0);
HSSFCell cells[] = new HSSFCell[5];
String[] titles = new String[] { "id", "name", "description", "price",
"credit" };
for (int i = 0; i < 5; i++) {
cells[0] = firstRow.createCell(i);
cells[0].setCellValue(titles[i]);
}
for (int i = 0; i < computers.size(); i++) {
HSSFRow row = sheet.createRow(i + 1);
Computer computer = computers.get(i);
HSSFCell cell = row.createCell(0);
cell.setCellValue(computer.getId());
cell = row.createCell(1);
cell.setCellValue(computer.getName());
cell = row.createCell(2);
cell.setCellValue(computer.getDescription());
cell = row.createCell(3);
cell.setCellValue(computer.getPrice());
cell = row.createCell(4);
cell.setCellValue(computer.getCredit());
}
OutputStream out = null;
try {
out = new FileOutputStream(file);
excel.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}