首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么把excel里面的数据 导入oracle中已经存在的表中,用代码实现 最好能远程导入服务器上

2012-01-18 
如何把excel里面的数据 导入oracle中已经存在的表中,用代码实现 最好能远程导入服务器上如何把excel里面的

如何把excel里面的数据 导入oracle中已经存在的表中,用代码实现 最好能远程导入服务器上
如何把excel里面的数据 导入oracle中已经存在的表中,用代码实现 最好能远程导入服务器上
各位大虾帮帮忙··

[解决办法]
我的一个class,函数que(sheet名),返回所有行列数据在Iterator(array)

Java code
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.OutputStream;import java.text.NumberFormat;import java.util.ArrayList;import java.util.Iterator;import java.util.Locale;import org.apache.log4j.ConsoleAppender;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;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 org.apache.poi.poifs.filesystem.POIFSFileSystem;public class jexcel {    private String file = "";    private POIFSFileSystem fs = null;    private HSSFWorkbook wb = null;    private int cols = 41;// 数据列数,去掉砂层厚度后的    private int cell_colums, cell_rows;    private static Logger logger = Logger.getLogger(jexcel.class.getName());    /**     * 构造函数,     *      * @param f -     *            Excel文件名     */    public jexcel(String f) {        String pattern = "%5p (%F:%L) - %m%n";        PatternLayout layout = new PatternLayout(pattern);        ConsoleAppender appender = new ConsoleAppender(layout);        logger.removeAllAppenders();        logger.addAppender(appender);        logger.setLevel((Level) Level.DEBUG);        try {            this.setFile(f);            this.init();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    public jexcel() {    }    public void setFile(String f) {        this.file = f;    }    private void init() throws FileNotFoundException, IOException {        fs = new POIFSFileSystem(new FileInputStream(file));        wb = new HSSFWorkbook(fs);    }public Iterator que(String n) {        // Map<Integer, String[]> data=new HashMap<Integer, String[]>();//use        // map        // String datas[][] = null;//use array        ArrayList datass = null;        if (fs == null) {            try {                this.init();            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }        HSSFSheet sheet = wb.getSheet(n);        // HSSFSheet csheet=wb.cloneSheet(0);        // wb.setSheetName(3,"复制"+wb.getSheetName(0),(short)1);//注意(short)1中文编码        // try {        // FileOutputStream fo=new FileOutputStream(file);        // try {        // wb.write(fo);        // fo.close();        // } catch (IOException e) {        // // TODO 自动生成 catch 块        // e.printStackTrace();        // }        //                    // } catch (FileNotFoundException e) {        // // TODO 自动生成 catch 块        // e.printStackTrace();        // }        // Iterator rows=sheet.rowIterator();        logger.debug("行数:" + sheet.getLastRowNum());        datass = new ArrayList(sheet.getLastRowNum());        cell_rows = sheet.getLastRowNum();        for (int j = 1; j <= sheet.getLastRowNum(); j++) {            HSSFRow row = sheet.getRow(j);            int ron = row.getRowNum();            // System.out.println("row #"+ron);            if (j == 1) {                logger.debug("列数:" + row.getLastCellNum());            }            cell_colums = row.getLastCellNum();            // String[] ce=new String[cols];            String[] ce = new String[cell_colums];            String tem = "";            for (int i = 0; i < cell_colums; i++) {                HSSFCell cell = row.getCell((short) i);                try {                    switch (cell.getCellType()) {                    case HSSFCell.CELL_TYPE_NUMERIC:                        double dd = cell.getNumericCellValue();                        NumberFormat nf = NumberFormat                                .getInstance(Locale.CHINESE);// java.text.NumberFormat,数字格式化                        nf.setGroupingUsed(false);// 不使用组,就是逗号科学计数                        tem = nf.format(dd);                        if (tem.indexOf(".") > 0) {                            int p = tem.indexOf(".");                            // logger.info(tem.substring(p));                            if (tem.substring(p).length() > 3)                                tem = tem.substring(0, tem.length() - 1);                        }                        break;                    case HSSFCell.CELL_TYPE_STRING:                        // logger.info(tem);                        tem = cell.getStringCellValue().trim();                        if (tem.length() == 0)                            tem = " ";                        break;                    case HSSFCell.CELL_TYPE_BLANK:                        tem = " ";                        break;                    default:                        tem = "null";                        break;                    }                    ce[i] = tem;                } catch (NullPointerException e) {                    // logger.error("read error data! "+j);                    break;                }            }            datass.add(ce);        }        logger.debug("" + datass.size());        return datass.iterator();    }} 


[解决办法]
用poi做吧,我也是用poi写的,有问题给我发信息
这是我的jsp例子
<%@page contentType="text/html; charset=GBK" import="java.io.*,org.apache.poi.poifs.filesystem.POIFSFileSystem,org.apache.poi.hssf.record.*,org.apache.poi.hssf.model.*,org.apache.poi.hssf.usermodel.*,org.apache.poi.hssf.util.*"%>
<%@ page import="auth.*,java.util.Vector"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Calendar"%> 
<jsp:useBean id="DBC" scope="page" class="auth.DBCurrent"/>
<jsp:useBean id="BAC" scope="page" class="auth.BACurrent"/>
<%@ page import="java.util.Date,java.util.Random,java.lang.*,java.util.*"%> 
<%@ page import="auth.*"%>


<%response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
Connection conn = DBC.getConn();
Statement stmt = DBC.stmtOpen(conn);
String sql = "";
ResultSet rs = null;

//sql = "select max(gyyxx_id)+1 t from yyf_gyyxx ";
//rs = DBC.doQuery(stmt,sql);
//rs.next();
// int Maxd = rs.getInt("t");
//out.println("第一一个="+Maxd);
%>
<html>
<head><title>Read Excel file </title>
</head>
<body>
An example of using Jakarta POI's HSSF package to read an excel spreadsheet: 


<form name="form1" method="get" action="">
Select an Excel file to read. 
<input type="file" name="xls_filename" onChange="form1.submit()">
</form>

<%
String filename = request.getParameter("xls_filename"); 
if (filename != null && !filename.equals("")) {
%>
<br>You chose the file <%= filename %>. 
<br><br>It's contents are:
<%
try
{

// create a poi workbook from the excel spreadsheet file
POIFSFileSystem fs =
new POIFSFileSystem(new FileInputStream(filename));
HSSFWorkbook wb = new HSSFWorkbook(fs);

for (int k = 0; k < wb.getNumberOfSheets(); k++)
{
%>
<br><br>Sheet <%= k %> <br>
<%

HSSFSheet sheet = wb.getSheetAt(k);
int rows = sheet.getPhysicalNumberOfRows();

for (int r = 0; r < rows; r++)
{


HSSFRow row = sheet.getRow(r);
if (row != null) { 
int cells = row.getPhysicalNumberOfCells();
%>
<br><b>ROW <%= row.getRowNum() %> </b>
<%Vector vet = new Vector();
for (short c = 0; c < cells; c++) 

HSSFCell cell = row.getCell(c);
if (cell != null) { 
String value = null;

switch (cell.getCellType())
{

case HSSFCell.CELL_TYPE_FORMULA :
value = Math.round((float)cell.getNumericCellValue()*10)/10.0+"";


break;

case HSSFCell.CELL_TYPE_NUMERIC :
value = String.valueOf( cell.getNumericCellValue())+"";
break;

case HSSFCell.CELL_TYPE_STRING :
value =cell.getStringCellValue();
break;

default :
value ="";
}

vet.add(value);

%>
<%//= "CELL col=" + cell.getCellNum()+ " VALUE=" + value %>
<%
} //if
}//for
out.println("<br>"+"---"+vet.get(0)+"---"+vet.get(1)+"---"+vet.get(2)+"---"+vet.get(3)+"---"+vet.get(4)+"---"+vet.get(5)+"---"+vet.get(6)+"---"+vet.get(7)+"<br>");
//if(BAC.NullToStr(vet.get(0)).equals("")==false){
//if(BAC.NullToStr(vet.get(0)).equals("")==false){
//if (BAC.isInt(vet.get(0))==true){
String lpo = vet.get(5)+"";
String epo = vet.get(7)+"";
String str = lpo.substring(0,4)+"-"+lpo.substring(4,6)+"-"+"1";//出生日期
String ends = epo.substring(0,4)+"-"+epo.substring(4,6)+"-"+"1";//截止日期
//以下是求今天是不是本月最后一天
SimpleDateFormat mn=new SimpleDateFormat("yyyy-MM-dd");
Date DaTime = new Date();
DaTime=mn.parse(ends);
Calendar CalTime = Calendar.getInstance();
CalTime.setTime(DaTime);
int LastDay = CalTime.getActualMaximum(Calendar.DAY_OF_MONTH);
int Now = CalTime.get(Calendar.DAY_OF_MONTH);
out.println(str);//
String endsE = epo.substring(0,4)+"-"+epo.substring(4,6)+"-"+LastDay;//截止日期最终
out.println("最后一天="+endsE);//
//str.substring(0,7); 
//}

String S0 = vet.get(0).toString();
String S3 = vet.get(3).toString();
String S4 = vet.get(4).toString();
String S6 = vet.get(6).toString();




int maxID = DBC.getMaxID("yyf_gyyxx","gyyxx_id","") + 1;
String Isql = "insert into yyf_gyyxx values("+maxID+",3,'"+S0+"','"+S3+"','"+S4+"',date'"+str+"','"+S6+"',date'"+endsE+"',0,6)";

int err = DBC.doUpdate(Isql);//out.println("<br>=="+value);
out.println("<br>----------------");
out.println("sql="+Isql);
out.println("<br>----------------");
//}
//rs.close();
//stmt.close();
//conn.close();
/*if (err!=1){
%>
<script>
alert("错误提示:数据添加失败!--<%=S0%>");
</script>
<%
}else{
%>
<script>
alert('提示:添加成功!');
</script>
<%}*///out.println("<br>");
}
}
}
}
catch (Exception e)
{
%>
Error occurred: <%= e.getMessage() %>
<%
e.printStackTrace();
}


%> 
</body>
</html>

热点排行