2021-04-21

将excel中的数据放入数据库

excel表
在这里插入图片描述

/**
 * 将excel中的内容保存到数据库
 * 关键技术:
 */
package task01文件操作实训之将excel中的内容保存到数据库;

import java.sql.*;

public class JDBCUtil {

	Connection conn = null;

	public Connection getConn() {
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_javasx"; // 连接数据库URL
		String userName = "sa"; // 连接数据库的用户名
		String passWord = "123"; // 连接数据库密码
		try {
			conn = DriverManager.getConnection(url, userName, passWord); // 获取数据库连接
			if (conn != null) {
				System.out.println("数据库连接成功!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn; // 返回Connection对象
	}

	public void insertEmp(String[] str) {		//字符串数组作为形式参数
		JDBCUtil iteacher = new JDBCUtil(); // 创建本类对象
		Connection conn = iteacher.getConn(); // 调用获取数据库连接方法
		//读下列sql字符串的技巧:将双引号去掉,看是否符合sql语句语法//不符合
		String sql = "insert into laborage  values('" +str[0] + "','"
	            + str[1] + "','" + str[2] + "','" + str[3] + "')"; // 定义向数据库插入数据的SQL语句
		try {
			Statement statement = conn.createStatement();
			statement.executeUpdate(sql); // 执行插入的sql语句
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}
/*
* 所用方法:
* Connection conn = null;//定义在外面
* Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//调用sqlserver的jar包,调用JDBC,被try/catch包含
*
* conn=DriverManager.getConnection(url, userName, passWord),连接数据库(包含数据库的URL,用户名,密码,)
* String Sql="...";
* Statement statement = conn.createStatement();
			statement.executeUpdate(sql); // 执行插入的sql语句
*
* Integer.valueOf(str[0]).intValue() 转换成整数类型
Float.valueOf(str[3])转换成浮点型,去总结几种转换方法*/
/**
 * 将excel中的内容保存到数据库
 * 关键技术:
 */
package task01文件操作实训之将excel中的内容保存到数据库;


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 javax.xml.crypto.Data;
import java.io.*;
import java.text.SimpleDateFormat;

public class ReadToDateBase {
	static JDBCUtil util = new JDBCUtil();

	//@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		String fileToBeRead = ".\\src\\task01文件操作实训之将excel中的内容保存到数据库\\exceltodb.xls";
		try {
			File file=new File(fileToBeRead);
			//待完成操练开始
			InputStream is = new FileInputStream(file);//获取文件输入流
	HSSFWorkbook workbook=new HSSFWorkbook(is);//获取工作簿对象
			HSSFSheet sheetAt = workbook.getSheet("员工表");
//			HSSFSheet sheetAt = workbook.getSheetAt(0);//跟上一行效果相同
			for (int i=1;i<sheetAt.getPhysicalNumberOfRows();i++){
				HSSFRow row= sheetAt.getRow(i);
				String value=" ";
				for (int j = 1; j < row.getPhysicalNumberOfCells() ; j++)
				{
				HSSFCell cell= row.getCell(j);
				if (cell!=null){

					if (cell.getCellType()==HSSFCell.CELL_TYPE_STRING)//判断单元格里的内容是否为字符串
						value+= cell.getStringCellValue()+",";
					else  if (cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC)//判断单元格的值是否为数字类型
						value+= cell.getNumericCellValue()+",";
					else  if (cell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN)//判断单元格的值是否为布尔型
						value+=cell.getBooleanCellValue()+",";
					else
						value+=cell.getDateCellValue()+",";//日期类型HSSFCell.CELL_TYPE_FORMULA:,因为excel只有上述三个类型

				}
				}
				String []str=value.split(",");
				util.insertEmp(str);
			}



			//待完成操练结束

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

/*
程序运行结果:
准备好exceltodb.xls文件,连接上数据库,运行出结果(略)
*/

/*
技术心得:
1、
2、
3、HSSFWorkbook excel文档对象
HSSFSheet excel的sheet
HSSFRow excel的行
HSSFCell excel的单元格
HSSFFont excel字体
HSSFName 名称
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表方法参数之间的联系。
ctrl+alt+-> /<- 回到下一个或者上个编辑地方


sql语句

create database db_javasx

use db_javasx


CREATE TABLE [dbo].[laborage](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [varchar](50) NULL,
	[sex] [varchar](50) NULL,
	[dept] [varchar](50) NULL,
	[laborage] [float] NULL
)

--在excell中插入一些测试数据。。。。。。

select * from laborage

//sheetAt.getPhysicalNumberOfRows()获取行数
//row.getPhysicalNumberOfCells()获取列数
类型判断
if (cell.getCellType()==HSSFCell.CELL_TYPE_STRING)//判断单元格里的内容是否为字符串
value+= cell.getStringCellValue()+",";
else if (cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC)//判断单元格的值是否为数字类型
value+= cell.getNumericCellValue()+",";
else if (cell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN)//判断单元格的值是否为布尔型
value+=cell.getBooleanCellValue()+",";
else
value+=cell.getDateCellValue()+",";//日期类型HSSFCell.CELL_TYPE_FORMULA:,因为excel只有上述三个类型

效果图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值