Java 读取 excel 输出 txt

怎么读取Excel对应的栏位,然后在读出的数据两边加上<“数据”>

我对没有用Java,所以请尽量帮我。
多谢~
POI jExcelAPI 都可以。
我已经采用 import jxl.* 了
怎么输出到txt文件中呢???

两位都不错。多谢~!

我给你一个我的例子吧:
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.sql.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import jxl.*;
public class SimUpdate {
private String fileName;
public SimUpdate(String fileName){
this.fileName = fileName;
}
static Map tNames;
static{
tNames = new HashMap();
}
//下面是主要代码

private void updateDb(){
try{
Connection conn = DbPool.connectDB();
if(conn != null){
Statement stmt = conn.createStatement();
/**********************************************/
jxl.Workbook rwb = null;
try{
//构建Workbook对象 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream(fileName);
rwb = Workbook.getWorkbook(is);
//Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
//Sheet的下标是从0开始的
//获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
//获取Sheet表中所包含的总列数
int rsColumns = rs.getColumns();
//获取Sheet表中所包含的总行数
int rsRows = rs.getRows();
//获取指这下单元格的对象引用

String simNumber = "",termSeqId = "";
//指定SIM卡号及序列号
for(int i=0;i<rsRows;i++){
for(int j=0;j<rsColumns;j++){
Cell cell = rs.getCell(j,i);
if(j==0){
simNumber = cell.getContents();//这里是猎取你要的参数,和下面一样
}
if(j == 1){
termSeqId = cell.getContents();
}
}
String sql = "update ....";//SQL语句
int isOk = stmt.executeUpdate(sql);
if(isOk == 0){

String insertSql = "insert....";//SQL语句
int isAdd = stmt.executeUpdate(insertSql);
if(isAdd > 0){
System.out.println("成功插入第"+i+"条数据");
}

}

}

//以下代码为写入新的EXCEL,这里不使用,所以注释
/*

//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://Book2.xls"),rwb);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);

//获取第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//决断单元格的类型,做出相应的转化
if (wc.getType() == CellType.LABEL) {
Label l = (Label) wc;
l.setString("The value has been modified.");
}
//写入Excel对象
wwb.write();
wwb.close();
*/
}catch(Exception e){
e.printStackTrace();
}
finally{
//操作完成时,关闭对象,翻译占用的内存空间
rwb.close();

}
/*********************************************/

}
}catch(Exception e){
e.printStackTrace();
}
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-14
这是我写的读取Excel数据。并把有相同的值保留一条

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
*1、控制面板-》管理工具-->数据源(ODBC)
*2、添加-->Driver do Microsoft Excel(*.xls)-->完成--》数据源名(book【随便填】),
* 选择【你要连接的excel表格的名称】-》ok-》ok
*
*
*从excel中读取数据
*
*
*/
public class CC {

/**
* @param args
*/
public static void main(String[] args) {

Connection con = null;
Statement stmt = null;
List<String> exceldatas = new ArrayList<String>();
List<String> col = new ArrayList<String>();

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:book", "", "");
stmt = con.createStatement();
String sql = "select * from [Sheet1$] ";

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {
exceldatas.add(rs.getString(1).trim() + "\t"
+ rs.getString(2).trim());
col.add("\t" + rs.getString(3));
}

int k = exceldatas.size();

for (int i = 0; i < k; i++) {
for (int j = i + 1; j < k; j++) {
if (exceldatas.get(i).trim().equals(exceldatas.get(j).trim())) {
exceldatas.remove(j);
col.remove(j);
}
k = exceldatas.size();

}

System.out.println(exceldatas.get(i)+col.get(i));
k = exceldatas.size();
}

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
第2个回答  2008-07-08
package cn.edu.fudan.life.idm.pbdb.readexcel;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import cn.edu.fudan.life.idm.pbdb.bo.BoSubmitInfo;
import cn.edu.fudan.life.idm.pbdb.domain.TbConstSpeciesStrain;

import java.io. * ;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.ArrayList;

/**
* 用于读取Blast表的类
* @author lipei
*
*/
public class ReadExcelBlastTable {

private HSSFSheet sheet;
private HSSFWorkbook workbook;
private String fileName;

static public BoSubmitInfo submit = new BoSubmitInfo();

public ReadExcelBlastTable(String filePath) {
try{
this.fileName = filePath;
workbook = new HSSFWorkbook(new FileInputStream(fileName));
sheet = workbook.getSheetAt(0);
}catch (IOException e) {
e.printStackTrace();
}
}

public String getFileName(){
return this.fileName;
}

/**
* 读取固定格式的Excel表格
* @return
*/

public List<String> getExcel( ){
HSSFCell cell;
List<String> plist = new ArrayList<String>();

try {
sheet=workbook.getSheetAt(0);
//下面代码获得Excel表的行数
int num = sheet.getLastRowNum();
for(int i=2;i<num;i++){
HSSFRow row=sheet.getRow(i);
for(int j=0;j<26;j++){
cell =row.getCell((short)j);
// System.out.println(cell.toString()+" "+j);
if(null!= cell && "" != cell.toString()){
int type = cell.getCellType();
if(type == 0){
String str = NumberFormat.getNumberInstance().format(cell.getNumericCellValue());
while(str.indexOf(",")>-1){
str = str.substring(0,str.indexOf(","))+str.substring(str.indexOf(",")+1).trim();
}
plist.add(str);
}
if(type == 1){
String str = cell.getStringCellValue().trim();
if(null != str && "" != str){
plist.add(str);
}
}
else{
plist.add("");
}
}else{
plist.add("");
}
}

}
}catch(Exception e){
e.printStackTrace();
}
return plist;
}
}
这个是我在项目中用到的,我的空间里有注释.在读出的数据两边加上“数据”很简单,在往list里放之前加上就可以了。呵呵这个是字串拼接了
相似回答