java - 如何使用 Java 8 访问 Excel 作为数据库

标签 java excel ojdbc

我使用的是 Java 8。

当我尝试通过 jdbc-odbc 访问 Excel 数据(基本上这是我的测试数据)时,我收到“java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver”

而且我还尝试以非 DSN 方式访问数据。

上网查了一下,发现Oracle已经不再支持jdbc-odbc了。

那么使用 Java 访问 Excel 数据的最简单方法是什么?

Connection con=null;
    Statement stmt=null;
    ResultSet rs=null;
    String query = "select TestScript from [TS 360 Scripts$]";

    try
    {
        Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
        con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Excel Driver(*.xlsx)};DBQ=D://TS 360 Script with Count.xlsx");


        stmt=con.createStatement();
        rs=stmt.executeQuery(query);
        while(rs.next())
        {
            System.out.println(rs.getString("TestScript"));
        }

        con.close();
        rs.close();
        stmt.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

最佳答案

不要将 Excel 文件作为数据库访问。而是使用这样的 jar 作为 Microsoft 文档的 Apache POI

下载链接:Apache POI For MS Docs- Jar

使用此 API 的示例:

注意:在运行之前,您必须将 apache poi jar 添加到构建路径

package com.dd.selenium;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

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;
import org.openqa.selenium.By;
import org.openqa.selenium.firefox.FirefoxDriver;


public class PerformDDTest {

    private static HSSFWorkbook xlWBook;

    private static HSSFSheet xlSheet;

    private static HSSFRow xlRow;

    private static HSSFCell xlCell;

    private static String filePath = "/home/dinesh/";

    private static String fileName = "test.xls";

    private static String url = "http://store.demoqa.com/"; 

    private static String result = "Pass";


    public static void main(String[] args) throws InterruptedException {

        try {
            FileInputStream xlFile = 
                    new FileInputStream(filePath+fileName);

            //Access the required test data sheet

            xlWBook =  new HSSFWorkbook(xlFile);

            xlSheet = xlWBook.getSheet("Sheet1");

            xlRow = xlSheet.getRow(1);

            String username = xlRow.getCell(1).getStringCellValue();
            String password = xlRow.getCell(2).getStringCellValue();

            FirefoxDriver driver = new FirefoxDriver();

            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

            driver.manage().window().maximize();


            driver.get(url);

            driver.findElement(By.xpath(".//*[@id='account']/a")).click();

            driver.findElement(By.id("log")).sendKeys(username);
            driver.findElement(By.id("pwd")).sendKeys(password);

            driver.findElement(By.id("login")).click();



            driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click();

            Thread.sleep(5000);

            driver.quit();

            setResultCell();


            FileOutputStream fout = new FileOutputStream(filePath+fileName);

            xlWBook.write(fout);

            fout.flush();
            fout.close();



        } catch (IOException e) {
            // TODO Auto-generated catch block
            result = "Failed";
            setResultCell();
            e.printStackTrace();
        }



    }


    private static void setResultCell() {
        xlCell = xlRow.getCell(3, xlRow.RETURN_BLANK_AS_NULL);

        if(xlCell == null ){
            xlCell = xlRow.createCell(3);
            xlCell.setCellValue(result);
        }else{
            xlCell.setCellValue(result);
        }
    }

}

关于java - 如何使用 Java 8 访问 Excel 作为数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28293978/

相关文章:

java - 将字符串变量从 java 传递到 php 函数

java - 比较不同 jar 中公共(public)类的值

excel - 使用其他 Excel 单元格的字符串值表示公式中的 Excel 单元格地址?

java - 无法将本地 jar 加载到我的 jar 中

java - 不支持的功能异常 fetchDmlReturnParams

java - Eclipse如何不调试jar文件

java - 需要 SOLR 和 PHP 帮助

c# - 使用 Gembox.Spreadsheet 加载 .xlsx 时出错

javascript - 如何在 PHP 中启用 ZipArchive?

java - 在项目中存储 JDBC Oracle Wallet