用java读取表格Excel表格

3154人阅读
我的Java随笔(2)
游戏开发中难免涉及将大量的数据写入到文件里,由程序读出再做处理。比如写个关卡刷兵的数据,我们需要出兵的兵种,位置等信息,如果这些信息是写死在程序中,以后调试游戏难度及出兵信息时对程序员将是个恶梦,想想如果有100关会怎么样?
解决办法就是将数据信息单拿出来放到数据文件中,比如写到Excel表中。以后测试的时候只需修改表中的数据而不需要修改代码,这样的话修改表及调试游戏的工作完全可以交给游戏策划人员做了,减少了策划和程序的交叉工作量。
以下是本人总结的一些Java程序读取Excel表数据的代码,供大家参考使用。
首先建立一个Excel文件往里填充点儿数据以备测试,比如我的表大概信息如下:
波数间隔(毫秒)
以下是程序代码,基本实现了读取Excel表中指定行和列,读取一行或一列及读取一定区间内的数据等功能。
首先实现一个读取Excel表的工具类ExcelReader.java,代码如下:
package tool.excel.
import java.io.F
import java.io.FileInputS
import java.io.IOE
import java.io.InputS
import jxl.C
import jxl.S
import jxl.W
import jxl.read.biff.BiffE
public abstract class ExcelReader {
private ExcelReader() {
* 获取excelFile引用的Excel文件实例
* @param excelFile 指向需要读取的Excel文件
* @return Excel文件实例
* @throws BiffException
* @throws IOException
public static Workbook getWorkBook(File excelFile) throws BiffException, IOException {
Workbook rwb =
// 创建输入流
InputStream stream = new FileInputStream(excelFile);
// 获取Excel文件对象
rwb = Workbook.getWorkbook(stream);
* 得到book引用的Excel文件中标签索引为sheetIndex位置处的工作表实例
* @param book Excel文件实例
* @param sheetIndex Excel文件的标签索引(第一个标签索引为0,第二个为1,以此类推)
public static Sheet getWorkBookSheet(Workbook book,int sheetIndex){
Sheet sheet = book.getSheet(sheetIndex);
* 读取Excel表指定单行或单列的数据并存放到一维数组返回
public static String[] readExcelRowOrCol(Workbook rwb,int sheetIndex,
int starRow,int endRow,
int starCol,int endCol) throws BiffException, IOException{
String[] data =
int row_distance = Math.abs(endRow - starRow);
int col_distance = Math.abs(endCol - starCol);
int need_read_row = -1;//需要读取的行号
int need_read_col = -1;//需要读取的列号
Sheet sheet = getWorkBookSheet(rwb, sheetIndex);
//根据情况实例化数组
if(row_distance == 0){//如果只读取一行
data = new String[col_distance + 1];
need_read_row = starR
}else if(col_distance == 0){//如果只读取一列
data = new String[row_distance + 1];
need_read_col = starC
for (int i = 0; i & data. i++) {
if(need_read_row != -1)//只需读一行
data[i] = readExcelData(sheet, need_read_row, i + starCol);
else if(need_read_col != -1)//只需读一列
data[i] = readExcelData(sheet, i + starRow, need_read_col);
* 读取sheetIndex表中的[starRow,endRow]至[starCol,endCol]区间的数据
public static String[][] readExcelAreaData(Workbook rwb,int sheetIndex,
int starRow,int endRow,
int starCol,int endCol)throws BiffException, IOException{
String[][] tempData = new String[endRow - starRow + 1][endCol - starCol + 1];
Sheet sheet = getWorkBookSheet(rwb,sheetIndex);
for (int i = starR i &= endR i++) {
for (int j = starC j &= endC j++) {
tempData[i - starRow][j - starCol] = sheet.getCell(j-1, i-1).getContents();
return tempD
* 指定读取excel表中的row行col列的数据
* @param excelFile
* @param row 和表里的行号对应
* @param col 和表里的列号对应
public static String readExcelData(Workbook rwb, int row, int col,
int sheetIndex) throws BiffException, IOException {
Sheet sheet = getWorkBookSheet(rwb,sheetIndex);
Cell cell =
cell = sheet.getCell(col - 1, row - 1);
String temp = cell.getContents();
public static String readExcelData(Sheet sheet, int row, int col)
throws BiffException, IOException {
Cell cell =
cell = sheet.getCell(col - 1, row - 1);
String temp = cell.getContents();
建立主程序(ExcelReaderTest.java)测试以上工具类的用法
package tool.excel.
import java.io.F
import java.io.IOE
import jxl.W
import jxl.read.biff.BiffE
import tool.excel.reader.ExcelR
public class ExcelReaderTest {
public static void main(String[] args) throws BiffException, IOException {
//生成File实例并指向需要读取的Excel表文件
File file =
file = new File(&E:/Excel读取测试/excel.xls&);
Workbook wb = ExcelReader.getWorkBook(file);
//读取Excel文件标签索引为0的表中的第1行,第2列的数据
String data = ExcelReader.readExcelData(wb, 1, 2, 0);
System.out.println(&data = &+data);
//读取Excel文件标签索引为0的表中的第2行,从第1列读到第5列结束
String[] data1 = ExcelReader.readExcelRowOrCol(wb, 0, 2, 2, 1, 5);
for (int i = 0; i & data1. i++) {
System.out.print(data1[i]+&,&);
System.out.println();
//读取Excel文件标签索引为0的表中的第1行,从第1行读到第6行结束
String[] data2 = ExcelReader.readExcelRowOrCol(wb, 0, 1, 6, 1, 1);
for (int i = 0; i & data2. i++) {
System.out.print(data2[i]+&,&);
System.out.println();
//读取Excel文件标签索引为0的表中1-4行,2-5列区间中的数据
String[][] area_data = ExcelReader.readExcelAreaData(wb, 0, 1, 4, 2, 5);
for (int i = 0; i & area_data. i++) {
for (int j = 0; j & area_data[i]. j++) {
System.out.print(area_data[i][j]+&,&);
System.out.println();
wb.close();//关闭工作流
运行主程序测试些输出数据,具体功能解释请大家看代码的注释
小贴士:以上读取Excel表的工具类需要依赖第三方jar包。本人用的库文件请大家在我的网盘下载名称为:jxl-读取Excel库.jar。下载地址:
/file/id_187912.htm?source=1
经过测试以上程序只能读取excel2003版本文件,请大家建立测试表时注意
祝大家周末愉快!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5156次
排名:千里之外2010年2月 Java大版内专家分月排行榜第二
2011年7月 Java大版内专家分月排行榜第三2010年1月 Java大版内专家分月排行榜第三2009年12月 Java大版内专家分月排行榜第三
2009年10月 Java大版内专家分月排行榜第一
2009年11月 Java大版内专家分月排行榜第二
2009年10月 Java大版内专家分月排行榜第一
2009年11月 Java大版内专家分月排行榜第二
2009年10月 Java大版内专家分月排行榜第一
2009年11月 Java大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。&nbsp&#8250&nbsp&nbsp&#8250&nbsp
java处理excel表格数据并导入数据库示例
有时我们有很大的数据需要录入,而这些数据存在一张excel表格之中,这时候最好的方法是通过java 代码自动导入。这需要引入一个专么处理office办公文件的java& api。java操作Excel最常用的开源组件有poi与jxl。jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007。
poi是apache下的一个子项目,poi应该是处理ms的office系列文档最好的组件了。poi3.7版本已经开始支持excel2007了。所以这里我们选择poi作为开发工具。package com.ssy.aims.
import java.io.FileInputS
import java.io.FileOutputS
import java.sql.C
import java.sql.DriverM
import java.sql.PreparedS
import java.sql.ResultS
import java.sql.S
import java.text.DecimalF
import java.util.ArrayL
import java.util.D
import org.apache.poi.hssf.usermodel.HSSFC
import org.apache.poi.hssf.usermodel.HSSFR
import org.apache.poi.hssf.usermodel.HSSFS
import org.apache.poi.hssf.usermodel.HSSFW
* @author cc
* java读取excel文件
* 一个Excel文件的层次:Excel文件-&工作表-&行-&单元格 对应到POI中,为:workbook-&sheet-&row-&cell
public class PoiExcel {
&&&&public static String outputFile = "E:/users.xls";
&&&&//public static String fileToBeRead = "E:/蒋和杰.xls";
&&&&static String createTableSql="";//创建数据库的sql
&&&&static String colType="TEXT";//字段类型
&&&&static String key="id";//主键
&&&&static String charSet="utf8";//表格字符类型
&&&&static String ENGINE="InnoDB";//表格类型
&&&&static String tableName="tempExcelToMysql";//表名称
&&&&static String colName="col";//默认字段名
&&&&static Connection conn =
&&& /* 数据库连接*/static void getConntion(){
&&&&&&&&try {
&&&&&&&&String driver_class = "com.mysql.jdbc.Driver";
&&&&&&&&String connection_url = "jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEncoding=gb2312";
&&&&&&&&String user_name = "username";
&&&&&&&&String db_password = "password";
&&&&&&&&Class.forName(driver_class);
&&&&&&&&conn = DriverManager.getConnection(connection_url, user_name,db_password);
&&&&&&&&}catch(Exception e){
&&&&&&&&&&&&e.printStackTrace();
public void CreateExcel() {
&&&&&&&&try {
&&&&&&&&&&&// 创建新的Excel 工作簿
&&&&&&&&&&&HSSFWorkbook workbook = new HSSFWorkbook();
&&&&&&&&&&&// 在Excel工作簿中建一工作表,其名为缺省值
&&&&&&&&&&&// 如要新建一名为"效益指标"的工作表,其语句为:
&&&&&&&&&&&// HSSFSheet sheet = workbook.createSheet("效益指标");
&&&&&&&&&&&HSSFSheet sheet = workbook.createSheet();
&&&&&&&&&&&// 在索引0的位置创建行(最顶端的行)
&&&&&&&&&&&HSSFRow row = sheet.createRow((short) 0);
&&&&&&&&&&&//在索引0的位置创建单元格(左上端)
&&&&&&&&&&&HSSFCell cell = row.createCell((short) 0);
&&&&&&&&&&&// 定义单元格为字符串类型
&&&&&&&&&&&cell.setCellType(HSSFCell.CELL_TYPE_STRING);
&&&&&&&&&&&// 在单元格中输入一些内容
&&&&&&&&&&&cell.setCellValue("sweater");
&&&&&&&&&&&// 新建一输出文件流
&&&&&&&&&&&FileOutputStream fOut = new FileOutputStream(outputFile);
&&&&&&&&&&&// 把相应的Excel 工作簿存盘
&&&&&&&&&&&workbook.write(fOut);
&&&&&&&&&&&fOut.flush();
&&&&&&&&&&&// 操作结束,关闭文件
&&&&&&&&&&&fOut.close();
&&&&&&&&&&&System.out.println("文件生成...");
&&&&&&&&} catch (Exception e) {
&&&&&&&&&&&&&&&&System.out.println("已运行 xlCreate() : " + e);
* 读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示
* 注意: 1.sheet, 以0开始,以workbook.getNumberOfSheets()-1结束 2.row,
* 以0开始(getFirstRowNum),以getLastRowNum结束 3.cell,
* 以0开始(getFirstCellNum),以getLastCellNum结束, 结束的数目不知什么原因与显示的长度不同,可能会偏长
public void readExcel(String fileToBeRead,String addacct) {
//将被表示成1.E10的手机号转化为,不一定是最好的转换方法
&&&&DecimalFormat df = new DecimalFormat("#");
&&&&&&&// 创建对Excel工作簿文件的引用
&&&&&&&HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
&&&&&&&for (int numSheets = 0; numSheets & workbook.getNumberOfSheets(); numSheets++) {
&&&&&&&&&&&&
&&&&&&&&&&&if (null != workbook.getSheetAt(numSheets)) {
&&&&&&&&&&&&&HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
&&&&&&&&&&&&&
&&&&&&&&&&&&&for (int rowNumOfSheet = 0; rowNumOfSheet &= aSheet.getLastRowNum(); rowNumOfSheet++) {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&System.out.print("行"+rowNumOfSheet);//其它格式的数据
&&&&&&&&&&&&&&&&&&if (null != aSheet.getRow(rowNumOfSheet)) {
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
&&&&&&&&&&&&&&&&&&&&&&&ArrayList recode=new ArrayList();
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&for (short cellNumOfRow = 0; cellNumOfRow &= aRow.getLastCellNum(); cellNumOfRow++) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&if (null != aRow.getCell(cellNumOfRow)) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HSSFCell aCell = aRow.getCell(cellNumOfRow);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int cellType = aCell.getCellType();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&switch (cellType) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&case 0://Numeric
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String strCell = df.format(aCell .getNumericCellValue());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.print(strCell);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&recode.add(strCell);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&case 1://String
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&strCell = aCell.getStringCellValue();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.print(strCell);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&recode.add(strCell);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&default:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println("格式不对不读");//其它格式的数据
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&} //end& of& 遍历所有数据项结束
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&getConntion();
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&String sql="insert into tab_student_info (member_no,member_name,sex," +
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"contact_mobile,province_no,city_no,county_no," +
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"village_no,address,status,oper_date," +
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"oper_code,oper_type,domain_no,att1,"+
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"values("+0+",'"+recode.get(0)+"',"+0+",'"+ recode.get(1)& +"',"+ 1 +"," + 1 +","+ 1 +","+ 1 +",'"+ recode.get(2) +"'," +&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1+","+"now()"+",'"+addacct+"',"+2+","+1+"," +0+","+
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(sql);
&&&&&&&&&&&&&&&&&&&&&&&&&&statement = conn.createStatement();
&&&&&&&&&&&&&&&&&&&&&&&&&&statement.executeUpdate(sql);&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&//mit();
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&} //end& of& if (null != aSheet.getRow(rowNumOfSheet))
&&&&&&&&&&&&&&&&&&System.out.println("");
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&} //end& of& for 遍历所有行结束
&&&&&&&&&&&}
&&&&&&&}& //end& of& for& 遍历所有sheet结束
&&&&} catch (Exception e) {
&&&&&&&System.out.println("ReadExcelError" + e);
上一篇: Spring的Bean Bean是Spring装配的组件模型,一切实体类都可以配置成一个Bean,进而就可以在任何其他的Bean中使用,一个Bean也可以不是指定的实体类,这就是抽象Bean。 在Spring中有两个最基本、最重要的包,即org.springframework.beans和org.springframewor
下一篇: java操作Excel最常用的开源组件有poi与jxl。jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007。poi是apache下的一个子项目,poi应该是处理ms的office系列文档最好的组件了。poi3.7版本已经开始支持excel2007了。但是由于excel2007底查看: 166475|回复: 0
Java用POI读取excel模版写入数据另存excel
Java用POI读取excel模版写入数据另存excel。适用于xls 2010版本的,废话不多说,看代码
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import org.apache.poi.hssf.usermodel.HSSFC
import org.apache.poi.hssf.usermodel.HSSFR
import org.apache.poi.hssf.usermodel.HSSFS
import org.apache.poi.hssf.usermodel.HSSFW
public class ExcelController {
@SuppressWarnings(&deprecation&)
public void excel() throws FileNotFoundException, IOException{
String filename = &d:\\ADpass\\excel.xls&;
& & HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
& & //按名引用excel工作表
//& & & && &&&HSSFSheet sheet = workbook.getSheet(&JSP&);
& & //也可以用以下方式来获取excel的工作表,采用工作表的索引值
& & HSSFSheet sheet = workbook.getSheetAt(0);
& & HSSFRow row,row1;
& & HSSFCell cell,cell1;
& & for(int icount=1;icount&10;icount++){
& & & & & & row = sheet.getRow(icount);
& & & & & & cell= row.getCell((short)2);
& & & & & & System.out.println(cell);
& & & & & & for(int j=1;j&10;j++){
& & & & & &&&row1 = sheet.getRow(j);
& & & & & & cell1= row1.getCell((short)1);
& & & & & & System.out.println(cell1);
& & & & & &&&if(cell.toString().equals(cell1.toString())){
& & & & & &&&getCell(row1,3).setCellValue(cell1.toString());
& & & & & &&&}
& & & & & &
& & & & & & }
& & }
& & //打印读取值
//& & & && &&&System.out.println(cell.getStringCellValue());
& &
& && &&&//新建一输出流
& && &&&FileOutputStream fout = new FileOutputStream(filename);&&//PS:
filename 是你另存为的路径,不处理直接写入模版文件
& && &&&//存盘
& && &&&workbook.write(fout);& && &
& && &&&fout.flush();
& && &&&//结束关闭
& && &&&fout.close();
public HSSFCell getCell(HSSFRow row, int index) {
// 取得分发日期单元格
HSSFCell cell = row.getCell(index);
// 如果单元格不存在
if (cell == null) {
// 创建单元格
cell = row.createCell(index);
}
// 返回单元格
public static void main(String[] args) {
ExcelController ec = new ExcelController();
& && &&&try {
ec.excel();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}复制代码推荐:&&
上一篇:下一篇:使用Java读取Excel文件内容 excel导入sql - 摩卡&Java - ITeye博客
博客分类:
可以用Java读取Microsoft
Excel文件。微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC和Sun的JDBC-ODBC驱动来读取Excel文件了。
如果你有个Excel文件,名为Book1.xls(译者注:由于原文的例子我没有下载下来,所以我用了自己的例子),并且,该文件中有一个工作表(sheet)名为Sheet1
微软的ODBC驱动程序把工作表中的第一行作为列名(译者注:即字段名),工作表名作为数据库表名。
要通过JDBC访问工作表,我们还必须创建一个新的ODBC数据源,在Windows
2000系统上创建数据源的过程如下:
进入“控制面板” --& “管理工具” --&
“数据源(ODBC)”,(译者注:打开后选择系统DSN),点击添加,在弹出窗口中选择“Driver do Microsoft
Excel(*.xls)”
然后在数据源名处输入你一个名字Book1(译者注:相当于数据库名),然后点击“选择工作簿”,然后找到并选取你的Excel文件
点击确定后,系统数据源列表中会出现你设置的数据源名称,
现在数据表已经在数据源列表里了(译者注:点击确定完成配置)。
(译者注:我的例子中)现在如果我们想挑出test1列中的所有“测试”值,那就需要用以下的SQL查询:
test1 FROM [Sheet1$] WHERE
test1='测试'
要注意的是工作表名后面跟了一个“$”符号,这个符号是不可缺少的。为什么?因为他的前后有方括号,因为“$”是SQL语句中的保留字。Life
is never easy(译者注:作者发感慨了)。
下面是例子程序:
import java.sql.C
import java.sql.S
import java.sql.ResultS
import java.sql.DriverM
public class ExcelReader {
public static void main( String[] args ) {
Connection c =
Statement stmnt =
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 );
stmnt.close();
c.close();
catch( Exception e ) {
System.err.println( e );
在此程序中,主函数main()
建立了一个数据表的连接,并取出符合条件的记录。
(译者注:另外,我这里还有一段程序,是读取所有记录的程序,仅作参考):
import java.sql.C
import java.sql.S
import java.sql.ResultS
import java.sql.ResultSetMetaD
import java.sql.DriverM
public class ExcelReader {
public static void main(String[] args){
Connection connection =
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 &= numberOfC i++) {
//用逗号分隔各列
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());
来自百度问答的答案:
方法很多,不过建议你先看看mysql的开发文档,里面写的很详细的,如果你懒得看,可以看下面的
1.有个软件PHP Excel Parser Pro
v4.2可以,你可以在这里下载:
2.可将Excel存成csv格式。然后通过phpmyadmin倒入mysql
3.先导入Access中,再弄到MySQL中,或者自己写程序读出excel中数据然后存入mysql中
4.还有一个比较笨的手工方法,就是先利用excel生成sql语句,然后再到mysql中运行,这种方法适用于excel表格导入到各类sql数据库:
一、假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3
二、在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
1、增加一列(假设是D列)
2、在第一行的D列,就是D1中输入公式:
=CONCATENATE("insert into table
(col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")
3、此时D1已经生成了如下的sql语句:
insert into table (col1,col2,col3) values
('a','11','33');
4、将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)
5、此时D列已经生成了所有的sql语句
6、把D列复制到一个纯文本文件中,假设为sql.txt
三、把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。
最后采用的方法:利用excel自动生成sql语句。最简单直接的方式。
浏览: 434580 次
来自: 杭州
12:05:59,222 INFO Ms ...
Java实现读取excel文件到数据库中,也可以使用插件实现的 ...
先谢谢,楼主,还有我没有配置host便签
linux环境下的参考配置,基本可以用

我要回帖

更多关于 java读取pdf表格 的文章

 

随机推荐