请问关于使用jxl读取Excel表内容的问题 你下载JXL后看一下文档说明就给长清楚了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前段时间正好做了,导入和导出的,你自己看吧 /**导出数据为XLS格式 * @param fos * @param bo */ public void writeExcelBo(FileOutputStream fos, java.util.Vector ve) { jxl.write.WritableWorkbook wwb; try { wwb= Workbook.createWorkbook(fos); jxl.write.WritableSheet ws= wwb.createSheet("booksheet", 10); ws.addCell(new jxl.write.Label(0, 1, "书目ID")); ws.addCell(new jxl.write.Label(1, 1, "ISBN")); ws.addCell(new jxl.write.Label(2, 1, "定价")); ws.addCell(new jxl.write.Label(3, 1, "书名")); ws.addCell(new jxl.write.Label(4, 1, "原书名")); ws.addCell(new jxl.write.Label(5, 1, "副题名")); ws.addCell(new jxl.write.Label(6, 1, "著者")); ws.addCell(new jxl.write.Label(7, 1, "译者")); ws.addCell(new jxl.write.Label(8, 1, "版次")); ws.addCell(new jxl.write.Label(9, 1, "出版地")); ws.addCell(new jxl.write.Label(10, 1, "出版社")); ws.addCell(new jxl.write.Label(11, 1, "出版日期")); ws.addCell(new jxl.write.Label(12, 1, "页数")); ws.addCell(new jxl.write.Label(13, 1, "书高")); ws.addCell(new jxl.write.Label(14, 1, "装帧")); ws.addCell(new jxl.write.Label(15, 1, "丛书名")); ws.addCell(new jxl.write.Label(16, 1, "一般性附注项")); ws.addCell(new jxl.write.Label(17, 1, "简介")); ws.addCell(new jxl.write.Label(18, 1, "主题词")); ws.addCell(new jxl.write.Label(19, 1, "中图法分类")); ws.addCell(new jxl.write.Label(20, 1, "更新日期")); ws.addCell(new jxl.write.Label(21, 1, "本数")); book=new Book[ve.size()]; for (int i= 0; i < ve.size(); i++) { book[i]= (Book)ve.get(i); ws.addCell(new jxl.write.Label(0, i + 2, "" + book[i].getBookId())); ws.addCell(new jxl.write.Label(1, i + 2, book[i].getIsbn())); ws.addCell(new jxl.write.Label(2, i + 2, "" + book[i].getPrice())); ws.addCell(new jxl.write.Label(3, i + 2, book[i].getBookTitle())); ws.addCell(new jxl.write.Label(4, i + 2, book[i].getOldFilename())); ws.addCell(new jxl.write.Label(5, i + 2, book[i].getSubTitle())); ws.addCell(new jxl.write.Label(6, i + 2, book[i].getWriter())); ws.addCell(new jxl.write.Label(7, i + 2, book[i].getTranscribe())); ws.addCell(new jxl.write.Label(8, i + 2, "" + book[i].getVersion())); ws.addCell(new jxl.write.Label(9, i + 2, book[i].getPublishCity())); ws.addCell(new jxl.write.Label(10, i + 2, book[i].getPublisher())); ws.addCell(new jxl.write.Label(11, i + 2, book[i].getPublishDate().toString())); ws.addCell(new jxl.write.Label(12, i + 2, "" + book[i].getPage())); ws.addCell(new jxl.write.Label(13, i + 2, "" + book[i].getHight())); ws.addCell(new jxl.write.Label(14, i + 2, book[i].getInstall())); ws.addCell(new jxl.write.Label(15, i + 2, book[i].getSeries())); ws.addCell(new jxl.write.Label(16, i + 2, book[i].getNotes())); ws.addCell(new jxl.write.Label(17, i + 2, book[i].getPrecisnotes())); ws.addCell(new jxl.write.Label(18, i + 2, book[i].getSubject())); ws.addCell(new jxl.write.Label(19, i + 2, book[i].getCls().replaceAll("_", ""))); ws.addCell(new jxl.write.Label(20, i + 2, book[i].getUpdatedate().toString())); ws.addCell(new jxl.write.Label(21, i + 2, "0")); } jxl.write.WritableFont wfc= new jxl.write.WritableFont( WritableFont.ARIAL, 255, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc); ws.addCell(new jxl.write.Label(0, 0, "为保证您提交定单的稳定和正确,导入定单时候请勿更改此表格式(请勿更改书目ID,订购本数自行添加!)")); wwb.write(); //关闭Excel工作薄对象 wwb.close(); } catch (IOException e) {} catch (RowsExceededException e) {} catch (WriteException e) {} } //导入EXCEL if (f.getName().indexOf(".xls") > 0) { try { fis= new FileInputStream(f); BookBean bob= new BookBean(); UserBean usb= new UserBean(); jxl.Workbook rwb= Workbook.getWorkbook(fis); jxl.Sheet sh= rwb.getSheet(0); int rowCount= sh.getRows(); SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy"); book= new Book[rowCount - 1]; for (int i= 1; i < rowCount; i++) { book[i - 1]= new Book(); jxl.Cell[] ce= sh.getRow(i); book[i - 1].setIsbn(ce[0].getContents().toString()); book[i - 1].setSeries(ce[1].getContents().toString()); book[i - 1].setBookTitle(ce[2].getContents().toString()); book[i - 1].setWriter(ce[3].getContents().toString()); book[i - 1].setTranscribe(ce[4].getContents().toString()); book[i - 1].setPublisher(ce[5].getContents().toString()); book[i - 1].setPublishDate(sdf.parse(ce[6].getContents().toString(), new ParsePosition(0))); book[i-1].setVersion(Integer.parseInt(ce[7].getContents().toString())); book[i-1].setPage(Integer.parseInt(ce[8].getContents().toString())); book[i-1].setCls(ce[9].getContents().toString()); book[i-1].setPrecisnotes(ce[10].getContents().toString()); book[i-1].setInstall(ce[11].getContents().toString()); book[i-1].setPrice(Float.parseFloat(ce[12].getContents().toString())); book[i-1].setUserid(usb.getUser().getUserid()); getVector().addElement(book[i - 1]); } rwb.close(); fis.close(); } catch (FileNotFoundException e) {} catch (BiffException e) {} catch (IOException e) {} catch (NumberFormatException e) { ShowMessage("数据导入失败,请按照本软件要求的EXCEL格式导入定单"); } } 看一下,对你会有所帮助的(不在此处粘贴具体内容,算是节约CSDN的磁盘空间吧,呵呵) JSP动态输出Excel及中文乱码的解决(地址:http://www.knowsky.com/4255.html)文中用到的:JExcel (下载页面:http://www.andykhan.com/jexcelapi/download.html) (使用指南页面:http://www.andykhan.com/jexcelapi/tutorial.html) 谢谢,我先看看不过我要的是从Excel特定的地方读入数据 特定的地方只要有规律就能取出来,其实在读excel的时候是把这个excel的每个 sheet看做是一个二维表来实现的,这样应该比较好理解吧 IBM的jxl方式:package excelfile;import java.text.DateFormat;import java.util.*;import java.io.*;import jxl.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class Jxlcreateexcel { public Jxlcreateexcel() { } public void getExcelFile() { String tableName = "EXCEL_OUTPUT_TEST_REALDATA_2"; String im = ""; String sid = "oral"; String server = "10.254.100.25"; String whereItem = "rownum <3375"; try { jxl.write.WritableWorkbook book = Workbook.createWorkbook(new File( "/home/ljz/filestest/jxlEXCEL_OUTPUT_TEST_REALDATA_2.xls")); jxl.write.WritableSheet sh = book.createSheet("jxltest", 0); DBAccess dbaccess = new DBAccess(); dbaccess.setSelectItems(tableName); dbaccess.setSid(sid); dbaccess.setServer(server); dbaccess.setItems(im); dbaccess.setWhereItem(whereItem); Hashtable sels = null; sels = dbaccess.getSelectData(); int hashElement = sels.size(); for (int y = 0; y < hashElement; y++) { Vector items = (Vector) sels.remove(String.valueOf(y)); for (int x = 0; x < items.size(); x++) { jxl.write.Label labelCell = new jxl.write.Label(x, y, (String) items.get(x)); sh.addCell(labelCell); labelCell = null; } } book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String args[]) { Date time = new Date(); DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); System.out.println("The process start time:"+fullDateFormat.format(time)); Jxlcreateexcel jxlexcle = new Jxlcreateexcel(); try { jxlexcle.getExcelFile(); } catch (Exception e) { e.printStackTrace(); } Date time1 = new Date(); System.out.println("The process end time:"+fullDateFormat.format(time1)); }}这是我写的在linux上面导入excel的方式,windows里面也一样,只不过把生成文件的目录改一下,还有就是你需要下载一个lib,这个就是jxl.jar,(注:DBAccess是我写的一个连接数据库以及从数据库获取数据的一个类 )另外还有一种方式就是poi,我也写了 package excelfile;import java.util.*;import java.io.*;import jxl.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class Jxlgetcelldata { public Jxlgetcelldata() { } public void getdata() throws IOException { try { InputStream myexcel = new FileInputStream("d:\\test_tab.xls"); Workbook rwb = Workbook.getWorkbook(myexcel); Sheet rs = rwb.getSheet(0); System.out.println(rs.getColumns()); System.out.println(rs.getRows()); Cell c01 = rs.getCell(0,0); String getdata = c01.getContents(); System.out.print("Cell"+"value:"+getdata); } catch (Exception e) { e.printStackTrace(); } } public static void main(String args[]){ Jxlgetcelldata celldata= new Jxlgetcelldata(); try{ celldata.getdata(); }catch(Exception e){ e.printStackTrace(); } }}刚才那个是写入excel文件,这个是从excel文件中读取内容 log4j的问题 java基础 高手请入,不够加分 动态改变串口的校验位 在线等答复,谢了! 为什么这样写,运行不了,在线等.谢谢各位 很小的问题! Java多线程下载问题 偶的mysql连接问题 建立Eclipse讨论小组,欢迎大家一起讨论使用和开发(smiling电子小组)。 java好学么 Java里有什么方法可以实现预处理吗? 请高手告之!!! Java如何实现EAS算法
/**导出数据为XLS格式
* @param fos
* @param bo
*/
public void writeExcelBo(FileOutputStream fos, java.util.Vector ve)
{
jxl.write.WritableWorkbook wwb;
try
{
wwb= Workbook.createWorkbook(fos);
jxl.write.WritableSheet ws= wwb.createSheet("booksheet", 10);
ws.addCell(new jxl.write.Label(0, 1, "书目ID"));
ws.addCell(new jxl.write.Label(1, 1, "ISBN"));
ws.addCell(new jxl.write.Label(2, 1, "定价"));
ws.addCell(new jxl.write.Label(3, 1, "书名"));
ws.addCell(new jxl.write.Label(4, 1, "原书名"));
ws.addCell(new jxl.write.Label(5, 1, "副题名"));
ws.addCell(new jxl.write.Label(6, 1, "著者"));
ws.addCell(new jxl.write.Label(7, 1, "译者"));
ws.addCell(new jxl.write.Label(8, 1, "版次"));
ws.addCell(new jxl.write.Label(9, 1, "出版地"));
ws.addCell(new jxl.write.Label(10, 1, "出版社"));
ws.addCell(new jxl.write.Label(11, 1, "出版日期"));
ws.addCell(new jxl.write.Label(12, 1, "页数"));
ws.addCell(new jxl.write.Label(13, 1, "书高"));
ws.addCell(new jxl.write.Label(14, 1, "装帧"));
ws.addCell(new jxl.write.Label(15, 1, "丛书名"));
ws.addCell(new jxl.write.Label(16, 1, "一般性附注项"));
ws.addCell(new jxl.write.Label(17, 1, "简介"));
ws.addCell(new jxl.write.Label(18, 1, "主题词"));
ws.addCell(new jxl.write.Label(19, 1, "中图法分类"));
ws.addCell(new jxl.write.Label(20, 1, "更新日期"));
ws.addCell(new jxl.write.Label(21, 1, "本数"));
book=new Book[ve.size()];
for (int i= 0; i < ve.size(); i++)
{
book[i]= (Book)ve.get(i);
ws.addCell(new jxl.write.Label(0, i + 2, "" + book[i].getBookId()));
ws.addCell(new jxl.write.Label(1, i + 2, book[i].getIsbn()));
ws.addCell(new jxl.write.Label(2, i + 2, "" + book[i].getPrice()));
ws.addCell(new jxl.write.Label(3, i + 2, book[i].getBookTitle()));
ws.addCell(new jxl.write.Label(4, i + 2, book[i].getOldFilename()));
ws.addCell(new jxl.write.Label(5, i + 2, book[i].getSubTitle()));
ws.addCell(new jxl.write.Label(6, i + 2, book[i].getWriter()));
ws.addCell(new jxl.write.Label(7, i + 2, book[i].getTranscribe()));
ws.addCell(new jxl.write.Label(8, i + 2, "" + book[i].getVersion()));
ws.addCell(new jxl.write.Label(9, i + 2, book[i].getPublishCity()));
ws.addCell(new jxl.write.Label(10, i + 2, book[i].getPublisher()));
ws.addCell(new jxl.write.Label(11, i + 2, book[i].getPublishDate().toString()));
ws.addCell(new jxl.write.Label(12, i + 2, "" + book[i].getPage()));
ws.addCell(new jxl.write.Label(13, i + 2, "" + book[i].getHight()));
ws.addCell(new jxl.write.Label(14, i + 2, book[i].getInstall()));
ws.addCell(new jxl.write.Label(15, i + 2, book[i].getSeries()));
ws.addCell(new jxl.write.Label(16, i + 2, book[i].getNotes()));
ws.addCell(new jxl.write.Label(17, i + 2, book[i].getPrecisnotes()));
ws.addCell(new jxl.write.Label(18, i + 2, book[i].getSubject()));
ws.addCell(new jxl.write.Label(19, i + 2, book[i].getCls().replaceAll("_", "")));
ws.addCell(new jxl.write.Label(20, i + 2, book[i].getUpdatedate().toString()));
ws.addCell(new jxl.write.Label(21, i + 2, "0"));
}
jxl.write.WritableFont wfc=
new jxl.write.WritableFont(
WritableFont.ARIAL,
255,
WritableFont.BOLD,
false,
UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc);
ws.addCell(new jxl.write.Label(0, 0, "为保证您提交定单的稳定和正确,导入定单时候请勿更改此表格式(请勿更改书目ID,订购本数自行添加!)"));
wwb.write();
//关闭Excel工作薄对象
wwb.close();
} catch (IOException e)
{} catch (RowsExceededException e)
{} catch (WriteException e)
{}
}
//导入EXCEL
if (f.getName().indexOf(".xls") > 0)
{
try
{
fis= new FileInputStream(f);
BookBean bob= new BookBean();
UserBean usb= new UserBean();
jxl.Workbook rwb= Workbook.getWorkbook(fis);
jxl.Sheet sh= rwb.getSheet(0);
int rowCount= sh.getRows();
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
book= new Book[rowCount - 1];
for (int i= 1; i < rowCount; i++)
{
book[i - 1]= new Book();
jxl.Cell[] ce= sh.getRow(i);
book[i - 1].setIsbn(ce[0].getContents().toString());
book[i - 1].setSeries(ce[1].getContents().toString());
book[i - 1].setBookTitle(ce[2].getContents().toString());
book[i - 1].setWriter(ce[3].getContents().toString());
book[i - 1].setTranscribe(ce[4].getContents().toString());
book[i - 1].setPublisher(ce[5].getContents().toString());
book[i - 1].setPublishDate(sdf.parse(ce[6].getContents().toString(), new ParsePosition(0)));
book[i-1].setVersion(Integer.parseInt(ce[7].getContents().toString()));
book[i-1].setPage(Integer.parseInt(ce[8].getContents().toString()));
book[i-1].setCls(ce[9].getContents().toString());
book[i-1].setPrecisnotes(ce[10].getContents().toString());
book[i-1].setInstall(ce[11].getContents().toString());
book[i-1].setPrice(Float.parseFloat(ce[12].getContents().toString()));
book[i-1].setUserid(usb.getUser().getUserid());
getVector().addElement(book[i - 1]);
}
rwb.close();
fis.close();
} catch (FileNotFoundException e)
{} catch (BiffException e)
{} catch (IOException e)
{} catch (NumberFormatException e)
{
ShowMessage("数据导入失败,请按照本软件要求的EXCEL格式导入定单");
}
}
JSP动态输出Excel及中文乱码的解决(地址:http://www.knowsky.com/4255.html)
文中用到的:JExcel
(下载页面:http://www.andykhan.com/jexcelapi/download.html)
(使用指南页面:http://www.andykhan.com/jexcelapi/tutorial.html)
不过我要的是从Excel特定的地方读入数据
package excelfile;
import java.text.DateFormat;
import java.util.*;
import java.io.*;
import jxl.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class Jxlcreateexcel {
public Jxlcreateexcel() {
} public void getExcelFile() {
String tableName = "EXCEL_OUTPUT_TEST_REALDATA_2";
String im = "";
String sid = "oral";
String server = "10.254.100.25";
String whereItem = "rownum <3375";
try {
jxl.write.WritableWorkbook book = Workbook.createWorkbook(new File(
"/home/ljz/filestest/jxlEXCEL_OUTPUT_TEST_REALDATA_2.xls"));
jxl.write.WritableSheet sh = book.createSheet("jxltest", 0);
DBAccess dbaccess = new DBAccess();
dbaccess.setSelectItems(tableName);
dbaccess.setSid(sid);
dbaccess.setServer(server);
dbaccess.setItems(im);
dbaccess.setWhereItem(whereItem);
Hashtable sels = null;
sels = dbaccess.getSelectData();
int hashElement = sels.size();
for (int y = 0; y < hashElement; y++) {
Vector items = (Vector) sels.remove(String.valueOf(y));
for (int x = 0; x < items.size(); x++) {
jxl.write.Label labelCell = new jxl.write.Label(x, y,
(String) items.get(x));
sh.addCell(labelCell);
labelCell = null;
}
}
book.write();
book.close();
}
catch (Exception e) {
e.printStackTrace();
}
} public static void main(String args[]) {
Date time = new Date();
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
System.out.println("The process start time:"+fullDateFormat.format(time));
Jxlcreateexcel jxlexcle = new Jxlcreateexcel();
try {
jxlexcle.getExcelFile();
}
catch (Exception e) {
e.printStackTrace();
}
Date time1 = new Date();
System.out.println("The process end time:"+fullDateFormat.format(time1));
}}这是我写的在linux上面导入excel的方式,windows里面也一样,只不过把生成文件的目录改一下,还有就是你需要下载一个lib,这个就是jxl.jar,(注:DBAccess是我写的一个连接数据库以及从数据库获取数据的一个类 )另外还有一种方式就是poi,我也写了
import java.io.*;
import jxl.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class Jxlgetcelldata {
public Jxlgetcelldata() {
} public void getdata() throws IOException {
try {
InputStream myexcel = new FileInputStream("d:\\test_tab.xls");
Workbook rwb = Workbook.getWorkbook(myexcel);
Sheet rs = rwb.getSheet(0);
System.out.println(rs.getColumns());
System.out.println(rs.getRows());
Cell c01 = rs.getCell(0,0);
String getdata = c01.getContents();
System.out.print("Cell"+"value:"+getdata);
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]){
Jxlgetcelldata celldata= new Jxlgetcelldata();
try{
celldata.getdata();
}catch(Exception e){
e.printStackTrace();
}
}
}
刚才那个是写入excel文件,这个是从excel文件中读取内容