如何用JAVA将数据库中的数据导入到excel表格

作者&投稿:泣琬 (若有异议请与网页底部的电邮联系)
如何把excel表格数据导入到数据库~

1、打开SQL Server 2014 Management Studio 数据库,并且登录进去;

2、新建一个数据库,将excel导入,在新建的数据名字上,鼠标右键,选择任务选项,之后导入数据,就会看到导入excel文件的窗口;

3、下拉框选中Microsoft Excel,浏览添加你需要导入到数据库的excel文件,然后点击下一步;

4、下拉框选中sql开头的,验证方式自己选择,一般是默认的验证方式,然后下面的数据库;

5、出现的这个页面不用动任何操作,直接继续点击下一步即可;

6、现在表示导入成功,上面有各类详细的数据,可以选择关闭,这个时候记得刷新数据库的表,否则看不到新导入的数据。

public static void main(String args[]) throws BiffException, IOException, WriteException{
//1 从Excel文件读取数据表

//Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
//读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:
//(完整代码见ExcelReading.java)

try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream("D:/user.xls");
jxl.Workbook rwb = Workbook.getWorkbook(is);


//一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段:


//获取第一张Sheet表
Sheet rs = (Sheet) rwb.getSheet(0);
//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,
//要注意的一点是下标从0开始,就像数组一样。

//一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:


//获取第一行,第一列的值
Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);
String strc00 = c00.getContents();

//获取第一行,第二列的值
Cell c10 = ((jxl.Sheet) rs).getCell(1, 0);
String strc10 = c10.getContents();

//获取第二行,第二列的值
Cell c11 = ((jxl.Sheet) rs).getCell(1, 1);
String strc11 = c11.getContents();

System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());



//如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,
//它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,
//Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

//如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:


String strcc00 = null;
double strcc10 = 0.00;
Date strcc11 = null;

Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0);
Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0);
Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1);

if(c00.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)cc00;
strcc00 = labelc00.getString();
}
if(c10.getType() == CellType.NUMBER)
{
NumberCell numc10 = (NumberCell)cc10;
strcc10 = numc10.getValue();
}
if(c11.getType() == CellType.DATE)
{
DateCell datec11 = (DateCell)cc11;
strcc11 = datec11.getDate();
}

System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType());
System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType());
System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType());




//在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,
//强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。
//API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:





//每种类型的具体意义,请参见Java Excel API Document。

//当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,
//以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段:


//操作完成时,关闭对象,释放占用的内存空间
rwb.close();


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


//Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,
//其它的方法请参考附录中的Java Excel API Document。

//Workbook类提供的方法

//1. int getNumberOfSheets();
//获得工作薄(Workbook)中工作表(Sheet)的个数,示例:


jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
int sheets = rwb.getNumberOfSheets();




//2. Sheet[] getSheets();
//返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:


jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();




//3. String getVersion();
//返回正在使用的API的版本号,好像是没什么太大的作用。


jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
String apiVersion = rwb3.getVersion();




//Sheet接口提供的方法

//1) String getName();
//获取Sheet的名称,示例:


jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs = rwb4.getSheet(0);
String sheetName = rs.getName();




//2) int getColumns()
//获取Sheet表中所包含的总列数,示例:


jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs2 = rwb5.getSheet(0);
int rsColumns = rs2.getColumns();




//3) Cell[] getColumn(int column)
//获取某一列的所有单元格,返回的是单元格对象数组,示例:


jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs3 = rwb6.getSheet(0);
Cell[] cell = rs3.getColumn(0);




//4) int getRows()
//获取Sheet表中所包含的总行数,示例:


jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs4 = rwb7.getSheet(0);
int rsRows = rs4.getRows();




//5) Cell[] getRow(int row)
//获取某一行的所有单元格,返回的是单元格对象数组,示例子:


jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs5 = rwb8.getSheet(0);
Cell[] cell5 = rs5.getRow(0);




//6) Cell getCell(int column, int row)
//获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,
//这与通常的行、列组合有些不同。


jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs6 = rwb9.getSheet(0);
Cell cell6 = rs6.getCell(0, 0);

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 ZfzSimUpdate(String fileName){
  this.fileName = fileName;
 }
 static Map tNames;
 static{
  tNames = new HashMap();
 }
 /**
  * 用于产生 数据库的 ID 值,组成 [年月日时分秒(100-999)] 总共 17 位数.
  * 根据不同的表名,可保证同一秒内产生的 ID 号不重复
  */  
 private static String getDtime() {
  String rid;
  Date nd = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  rid = sdf.format(nd);
  return rid;
 }
 
 public String getSeqNumber(String tableName) {
  if(tableName == null || "".equals(tableName))
   tableName = "GENERY";
  Integer it;
  // noinspection SynchronizeOnNonFinalField
  synchronized(tNames){
   it = (Integer)tNames.get(tableName);
   if(it == null){
    it = new Integer(100);
    tNames.put(tableName, it);
   }else{
    if(it.intValue() > 998)
     it = new Integer(100);
    else
     it = new Integer(1 + it.intValue());
    tNames.put(tableName, it);
   }
  }
  return getDtime() + String.valueOf(it);
 }
 
 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();
       }  
       termSeqId = "633"+simNumber;
      } 
      String sql = "查询SQL";
      int isOk = stmt.executeUpdate(sql);
      if(isOk == 0 && !simNumber.equals("")){
       String termId = getSeqNumber("termInf");
       String insertSql = "自定义INSERT";
       int isAdd = stmt.executeUpdate(insertSql);
       if(isAdd > 0){
        System.out.println("成功插入第"+i+"条数据");
       }
        
      }
      //System.out.println("SIM卡号:"+simNumber+",序列号:"+termSeqId);
     }
     
     //以下代码为写入新的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();
  }
 }
 public static void main(String args[]){
  DbPool dbPool = new DbPool("dbConn.cfg");//连接数据库
  SimUpdate simUpdate = new SimUpdate("zfz_sim.xls");
  simUpdate.updateDb();
  
 }
  
}

我只用了读取XLS,写入没试,应该没问题吧,你把注释了的拿 来试一下吧


一般使用CSV格式。

  1. 读取数据

  2. 生成CSV文件

  3. 下载CSV文件



第一步:如何用POI操作Excel

@Test
public void createXls() throws Exception{
//声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明表
HSSFSheet sheet = wb.createSheet("第一个表");
//声明行
HSSFRow row = sheet.createRow(7);
//声明列
HSSFCell cel = row.createCell(3);
//写入数据
cel.setCellValue("你也好");

这个基本上不需要 java 就能做了
在 excel 里面直接建一个数据源就行了

另外,也可以用 etl 的工具,比如 kettle 之类的

完整举例如下:
import java.io.*;
import java.sql.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

public class ExcelFile {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement psmnt = null;
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("Select * from student");

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Excel Sheet");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("Roll No");
rowhead.createCell((short) 1).setCellValue("Name");
rowhead.createCell((short) 2).setCellValue("Class");
rowhead.createCell((short) 3).setCellValue("Marks");
rowhead.createCell((short) 4).setCellValue("Grade");

int index = 1;
while (rs.next()) {

HSSFRow row = sheet.createRow((short) index);
row.createCell((short) 0).setCellValue(rs.getInt(1));
row.createCell((short) 1).setCellValue(rs.getString(2));
row.createCell((short) 2).setCellValue(rs.getString(3));
row.createCell((short) 3).setCellValue(rs.getInt(4));
row.createCell((short) 4).setCellValue(rs.getString(5));
index++;
}
FileOutputStream fileOut = new FileOutputStream("c:\\excelFile.xls");
wb.write(fileOut);
fileOut.close();
System.out.println("Data is saved in excel file.");
rs.close();
connection.close();
} catch (Exception e) {
}
}
}


Java代码处理数据技巧(java代码处理数据技巧有哪些)
总的来说,针对机构树这种数据结构,提高程序运行效率的关键在于选择高效的算法和合理的数据结构,并采用多种技术手段来优化程序的设计和实现。 Java编程开发规范及其技巧? 在用Java进行开发前,一定要牢牢遵守Java的开发规范,只有这样你的Java开发之路才能更加顺畅。而掌握相应的Java开发技巧,凳塌局则可以让你工作起来事半...

java中如何将数据显示到jcombobox上?
在Java中,可以使用JComboBox组件来显示下拉列表,并在用户选择列表中的选项时触发事件。要在JComboBox中显示数据,可以使用以下方法之一:使用JComboBox的构造函数:String[] data = {"item1", "item2", "item3"};JComboBox comboBox = new JComboBox(data);使用JComboBox的setModel方法:String...

如何用java解析xml文档,然后将数据存到数据库里
return obj;} catch(Exception e){ e.printStackTrace();return null;} } } <?xml version="1.0"?> <config> <className>test11.CatAdapter<\/className> <\/config> 然后你吧解析处理的值放到数组或LIST或其他的你能存放的对象中。再写SQL插入到数据库就好了啊。主要数据库事务处理或用批处理 ...

java如何将数据库中的数据统计后用jfreechart显示出来(要具体代码...
String dataName[]=new String[]{"0-30岁","30-50岁","50-70岁","70岁以上"};\/\/显示数据系列 int dataValueCount[]={4,5,4,6};\/\/数据系列对应的值 \/\/以上两行可以从数据库里去取值,用循环写入数组 \/\/---创建数据集,并设置值--- DefaultCategoryDataset categoryDataset = newDefault...

Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?
按行读取文本,写入一个StringBuilder或StringBuffer对象中,循环写入时判断删除行时不写入,最后将拼接的字符串写入原文件即可,这里面需要注意存储字符串长度。

用JAVA怎样才能将数据输出到文件的指定位置
参考这程序吧 \/* * c7:IODemo4.java 1.0 05\/02\/10 * author:Leo * This program is protected by copyright laws. * Reader from and write to files. * 字符流和字节流类似,但效率更高.有可能的情况下,尽量使用reader和writer * 一般只要把Reader替换为InputStream,用Writer 替换OutputStream...

java怎样将读取数据写入数据库
三、创建数据库的连接 要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。 使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。 例如:\/\/连接MySql数据库,用户名和密码...

如何用java 将txt数据导入excel
效果如图:注意事项一:需要的额外的外部包jxl.jar 这个到处都有下载..注意事项二:test.txt文本的内容如下 姓名 年龄 张三 15 刘二 18 张飞 32 曹操 56 周瑜 23 具体java代码详见附件下载

java如何实现对数据表里面的数据删除(最好给个具体代码范例)
\/\/定义数据库连接的URL private static final String URL="jdbc:sqlserver:\/\/localhost:1433;database=j1105";\/\/定义数据库的用户名 private static final String USERNAME = "sa";\/\/定义数据库密码 private static final String PASSWORD = "sa";\/\/定义一个连接的引用,使用单例模式 private static ...

请问如何用java将 txt 文件中的一行中的具体数据提取出来
BufferedRead read = new BufferedRead(new InputStreamRead(new FileInputStream("c:\\\\a.txt")));String content = read.readLine();System.out.println(content);需要捕获异常,我这没有编辑工具,就简单的写了一下,给你点思路

凤庆县15388988652: 怎样用java应用程序向数据库中导入数据 -
尘桦七厘: 看源数据是什么格式: 1、如果是csv、纯文本等格式,可以用java调用操作系统的命令(一般是数据库客户端提供的导入程序). 2、如果是excel,最好手工另存为csv,然后用第1种方法. 3、如果是在程序中需要根据不同条件随时导入,那么最好用java读数据,然后用jdbc连接数据库导进去.

凤庆县15388988652: 如何用JAVA代码导入数据库的内容? -
尘桦七厘: 导入.1、就是执行sql语句.2、直接把数据库文件写到相应的数据目录下!

凤庆县15388988652: 关于用JAVA写个程序 ,把旧数据库中的内容导入到新数据库中 ,求助,求思路 -
尘桦七厘: 这个很简单啊 定义两个DataSource,然后这边读出来数据到那边写进去就行了.

凤庆县15388988652: 如何用java程序实现把一个数据库的数据导入另一个数据库中,说说思路.不能用导入导出功能,代码实现.过
尘桦七厘: 不用导入导出功能,就是要通过增删改来实现大体思路是从DB1中select出数据,insert到DB2中需要考虑的有3点,1.DB连接及操作用模块(DAO)2.程序中用来存储DB数据的数据模型3.DB数据与数据模型的匹配处理

凤庆县15388988652: 如何用java实现mysql数据库的导入导出 -
尘桦七厘: MySql导出数据库的命令如下: Sql代码 mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath利用Java调用命令窗口执行命令...

凤庆县15388988652: 怎么用java把数据库里的数据写入到excel表中 -
尘桦七厘: java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话,你自己程序里面写就行了,给你个例子:从Excel读取数据,生成新的Excel,以及修改Excel package common.util; import jxl.*; import jxl....

凤庆县15388988652: 怎么用java实现mysql数据库的导入导出 -
尘桦七厘: 使用Java实现对MySql数据库的导入与导出 package com.project.ajaxs; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io....

凤庆县15388988652: 如何用JAVA将数据库中的数据导入到excel表格 -
尘桦七厘: 第一步:如何用POI操作Excel@Test public void createXls() throws Exception{//声明一个工作薄HSSFWorkbook wb = new HSSFWorkbook();//声明表HSSFSheet sheet = wb.createSheet("第一个表");//声明行HSSFRow row = sheet.createRow(7);//声明列HSSFCell cel = row.createCell(3);//写入数据cel.setCellValue("你也好");

凤庆县15388988652: 如何用java实现把excel表中的数据导入到mysql数据库已有的表中 -
尘桦七厘: package com.cn.gao; import java.util.List; public class FromExcelToDb { public static void main(String[] args) {//得到表格中所有的数据 List listExcel=StuService.getAllByExcel("d://book.xls");/*//得到数据库表中所有的数据 List listDb=StuService....

凤庆县15388988652: 用JAVA快速的将一个表中的数据导入到另一个表里 -
尘桦七厘: java访问excel数据的方法 1.建立odbc连接 打开“管理工具”中“ODBC数据源管理器”中“系统DSN”,添加一个“Driver do Microsoft Excel(*.xls)”,“完成”,输入“数据源名(N)”,注意在此输入的名称将来用于访问JDBC的名称,并为...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网