将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只有上述三个类型
效果图