Excel导入导出神器:JXL:POI

最近在工作开中,经常遇到项目中需要进行对表格的数据进行导入导出,我试着写了一个类,包含了导入导出的一些具体方法。废话不多说,上代码:


import java.awt.List;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Iterator;

import javax.imageio.stream.FileImageInputStream;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileFilter;

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

import com.sun.rowset.internal.InsertRow;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ExportAndImportUtil {

/**
* @param args
* @throws IOException
*/
static int num = 0;
private JTable table;
public static void main(String[] args) throws IOException, Exception {
ExportAndImportUtil util= new ExportAndImportUtil();
// util.exportData();
util.importData();
}

/**
* @desc 导出数据
* @author 张兴旺
* @date 2012-12-15
*/
public void exportData() throws Exception {
// 打开或者生成一个文件
WritableWorkbook wwb = Workbook.createWorkbook(new File("何永东" + num
+ ".xls"));

// 生成xls工作表所在的页,一般设置成第一页
WritableSheet ws = wwb.createSheet("那些事", 0);

// 设置字段字体
WritableFont fontSet = new WritableFont(WritableFont.createFont("黑体"),
10, WritableFont.BOLD);

// 设置格式剧中
WritableCellFormat des = new WritableCellFormat(fontSet);
// 设置字段格式
des.setAlignment(Alignment.CENTRE);

ArrayList list = new ArrayList();
list.add("单号");
list.add("收货部门");
list.add("收货时间");
list.add("预配航班号");
list.add("件数");
for (int i = 0; i < list.size(); i++) {
String columnAlias = (String) list.get(i);
Label lb = new Label(i, 0, columnAlias, des);

// 增加每列
ws.addCell(lb);
}

//你好,这里可以从后台数据库得到数据进行导出,也可以从界面表格中导出,我这里为了得到效果,值建立好一个空的Jtable
//如需得到数据库的数据,以jdbc操作为例:
//PreparedStatement ps = null;
//ResultSetMetaData rsmd = ps.getMetaData()
for(int k=0;k<this.table.getRowCount();k++){
String columnValue = "";
for(int i=0;i<list.size();i++){
columnValue = (String) this.table.getCellEditor(k, i).getCellEditorValue();
Label lf = new Label(i, k+1, columnValue, des);
ws.addCell(lf);
}
}
wwb.write();
Runtime rt = Runtime.getRuntime();
try {
String[] command = {"explorer","何永东" + num+ ".xls"};
rt.exec(command);
} catch (Exception e) {
// TODO: handle exception
}finally{
wwb.close();
}
num++;
}

static File file = null;
public void importData(){
JFileChooser fileChooser = new JFileChooser();
FileFilter fileFilter = new FileFilter(){

@Override
public boolean accept(File f) {
String fileName = f.getName().toLowerCase();
boolean result = f.isDirectory() || fileName.endsWith(".xls");
return result;
}

@Override
public String getDescription() {
return "Excel文档(*.xls)";
}
};
fileChooser.setFileFilter(fileFilter);
fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
int returnVal = fileChooser.showOpenDialog(null);
if(returnVal ==JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile().getAbsoluteFile();
if(!(file.getName().endsWith(".xls"))){
JOptionPane.showMessageDialog(null, "该文件不是正确的xls文件", "温馨提示", JOptionPane.PLAIN_MESSAGE);
return;
}
}

}

public void readExcel(File file) {
ArrayList numberList = new ArrayList();
try {
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = hSSFWorkbook.getSheetAt(0);
HSSFRow row = null;
for(int j = 0;j<sheet.getLastRowNum();j++){
row = sheet.getRow(j);
String num = row.getCell(0).getStringCellValue();
String name = row.getCell(1).getStringCellValue();
ArrayList list = new ArrayList();
list.add(0, num);
list.add(1, name);
numberList.add(list);
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "该文件不是正确的xls文件", "温馨提示", JOptionPane.PLAIN_MESSAGE);
return;
}

insertDataToTable(numberList);
}

private void insertDataToTable(ArrayList numberList) {
Iterator it = numberList.iterator();
while(it.hasNext()){
//导入数据到表格,说实话,这个我试了好多,都没能实现,好惨
// table.add

}
}

}

其中,jxl和poijar包在网上可以下载,在此不贴出来了哈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值