Soalan: Bolehkah saya membaca fail Excel menggunakan Java? Jika ya, bagaimana?
Jawapan: Ya, fail Microsoft Excel boleh dibaca dengan Java. Microsoft menyediakan pemacu ODBC untuk Excel, jadi kami boleh menggunakan pemacu JDBC-ODBC JDBC dan Sun untuk membaca fail Excel.
Jika anda mempunyai fail Excel bernama Book1.xls (Nota Penterjemah: Memandangkan saya tidak memuat turun contoh asal, saya menggunakan contoh saya sendiri), dan terdapat lembaran kerja dalam fail Bernama Sheet1, pemacu ODBC Microsoft menggunakan yang pertama baris dalam lembaran kerja sebagai nama lajur (Nota Penterjemah: Nama medan) dan nama lembaran kerja sebagai nama jadual pangkalan data. Untuk mengakses lembaran kerja melalui JDBC, kita juga mesti mencipta sumber data ODBC baharu Proses mencipta sumber data pada sistem Windows 2000 adalah seperti berikut:
Masukkan Sumber Data "Panel Kawalan" (. ODBC), (Nota Penterjemah: Pilih sistem DSN selepas dibuka), klik Tambah, pilih "Pemandu buat Microsoft Excel(*.xls)
dalam tetingkap pop timbul dan masukkan nama Book1 anda dalam sumber data nama (Nota Penterjemah: Bersamaan dengan nama pangkalan data), kemudian klik "Pilih buku kerja, kemudian cari dan pilih fail Excel anda
Selepas mengklik OK, nama sumber data yang anda tetapkan akan muncul dalam senarai sumber data sistem, dan kini jadual data Sudah dalam senarai sumber data (Nota Penterjemah: Klik OK untuk melengkapkan konfigurasi)
(Nota Penterjemah: Dalam contoh saya) Sekarang jika kita mahu memilih semua "nilai ujian" dalam lajur test1, maka Anda perlu menggunakan pertanyaan SQL berikut:
PILIH ujian1 DARI [Sheet1$] DI MANA test1='Test'
Perlu diingat bahawa nama lembaran kerja diikuti dengan simbol "$. Simbol ini Ia amat diperlukan. Mengapa? Kerana terdapat kurungan segi empat sama sebelum dan selepasnya, kerana "$ ialah perkataan terpelihara dalam pernyataan SQL.
Berikut ialah contoh atur cara:
import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; public class ExcelReader { public static void main( String[] args ) { Connection c = null; Statement stmnt = null; try { Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); c = DriverManager.getConnection( "jdbc:odbc:Book1", "", "" ); stmnt = c.createStatement(); String query = "SELECT test1 FROM [Sheet1$] WHERE test1='测试'"; ResultSet rs = stmnt.executeQuery( query ); System.out.println( "查得匹配'测试'的test1的记录为:" ); while( rs.next() ) { System.out.println( rs.getString( "test1" ) ); } } catch( Exception e ) { System.err.println( e ); } finally { try { stmnt.close(); c.close(); } catch( Exception e ) { System.err.println( e ); } } } } | import java.sql.Connection;import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; kelas awam ExcelReader {import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DriverManager;
public class ExcelReader {
public static void main(String[] args){
Connection connection = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection( "jdbc:odbc:Book1","","" );
Statement st = con.createStatement();
ResultSet rs = st.executeQuery( "SELECT * FROM [Sheet1$]" );
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if(i>1) //用逗号分隔各列
System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue);
}
System.out.println("");
}
st.close();
con.close();
} catch(Exception ex) {
System.err.print("Exception: ");
System.err.println(ex.getMessage());
}
}
} Salin selepas log masuk | public static void main ( String[ ] args ) {Sambungan c = null;Pernyataan stmnt = null;cuba {Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );c = DriverManager.getConnection( "jdbc:odbc:Book1", "", "" );stmnt = c.createStatement();String query = "SELECT test1 FROM [Sheet1$] WHERE test1= 'Ujian '";ResultSet rs = stmnt.executeQuery( query );System.out.println( "Rekod ujian1 padanan 'ujian' ditemui:" );while( rs.next ( ) ) {System.out.println( rs.getString( "test1") );}}catch( Exception e ) {System.err.println( e ) ;}akhirnya {cuba {stmnt.close();c.close();}catch( Exception e ) { System .err.println( e );}}}} |
Dalam program ini , fungsi utama main() mewujudkan sambungan ke jadual data dan mendapatkan semula rekod yang memenuhi syarat. (Nota penterjemah: Selain itu, saya juga mempunyai program di sini, iaitu program yang membaca semua rekod, untuk rujukan sahaja):
Atas ialah kandungan terperinci Cara membaca kandungan fail Excel menggunakan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!