怎么把excel文件里的数据导入sql数据库

发布网友

我来回答

2个回答

懂视网

System.Configuration; using System.Data; using System.Data.OleDb; using System.Data.SqlClient;

 

你可以写一个方法,是去读取Excel文档的方法,返回DataSet数据集:
技术分享

 

技术分享
private DataSet ImportExcelToDataSet(string virtualPath, string sqlQueryStatement)
 {
 string excelConnectionString = DB.ExcelConnectionString(Server.MapPath(virtualPath));
 OleDbConnection dc = new OleDbConnection(excelConnectionString);
 OleDbDataAdapter da = new OleDbDataAdapter(sqlQueryStatement, dc);
 DataSet ds = new DataSet();
 da.Fill(ds);
 return ds;
 }
Source Code


导入数据库,在数据库中,需要创建一个表来存储Excel导入来的数据:
技术分享


接下来,你可以使作SqlBulkCopy的方法进行复制数据库:

技术分享

 

技术分享
try
 {
  string cs = ConfigurationManager.ConnectionStrings["InsusSqlConnectionString"].ConnectionString;
  using (SqlConnection sqlConn = new SqlConnection(cs))
  {
  string sqlQueryStatement = "SELECT [Material],[Plnt],[Level],[Item],[Component],[Object description] FROM [Sheet1$]";
  string virtualPath = "~/App_Data/Book1.xlsx";

  DataSet ds = ImportExcelToDataSet(virtualPath, sqlQueryStatement);

  DataTable dt = ds.Tables[0];

  sqlConn.Open();
  using (SqlBulkCopy sqlbc = new SqlBulkCopy(sqlConn))
  {
   sqlbc.DestinationTableName = "BOM";
   sqlbc.ColumnMappings.Add("Material", "Material");
   sqlbc.ColumnMappings.Add("Plnt", "Plnt");
   sqlbc.ColumnMappings.Add("Level", "Level");
   sqlbc.ColumnMappings.Add("Item", "Item");
   sqlbc.ColumnMappings.Add("Component", "Component");
   sqlbc.ColumnMappings.Add("Object description", "Object description");
   sqlbc.WriteToServer(dt);
   Response.Write("数据导入成功!");
  }
  }
 }
 catch (Exception ex)
 {
  throw ex;
 }
Source Code


演示:
技术分享

 

读取Excel的记录并导入SQL数据库

标签:com   color   bom   创建   l数据库   cli   需要   add   splay   

热心网友

第一步:建立数据库和数据表(按照自己的Excel数据设立字段)。
[sql] view plain copy print?
CREATE DATABASE php_excel;
USE php_excel;
CREATE TABLE IF NOT EXISTS php_excel(
id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gid varchar(20) NOT NULL,
stu_no varchar(20) NOT NULL,
name varchar(45) NOT NULL,
age int(4) NOT NULL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

第二步:前台index.php文件。
[html] view plain copy print?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>phpexcel导入excel数据到MYSQL数据库</title>
</head>

<body>
<form name="frm1" action="insertdb.php" method="post" enctype="multipart/form-data">
<input name="filename" type="file" />
<input name="submit" type="submit" value="import" />
</form>
</body>
</html>

第三步:向数据库插入数据的insertdb.php文件。
[php] view plain copy print?
session_start();
header("Content-type:text/html;charset:utf-8");
//全局变量

$succ_result=0;
$error_result=0;
$file=$_FILES['filename'];
$max_size="2000000"; //最大文件*(单位:byte)
$fname=$file['name'];
$ftype=strtolower(substr(strrchr($fname,'.'),1));
//文件格式
$uploadfile=$file['tmp_name'];
if($_SERVER['REQUEST_METHOD']=='POST'){
if(is_uploaded_file($uploadfile)){
if($file['size']>$max_size){
echo "Import file is too large";
exit;
}
if($ftype!='xls'){
echo "Import file type is error";
exit;
}
}else{
echo "The file is not empty!";
exit;
}
}
require("./conn.php"); //连接mysql数据库

//调用phpexcel类库
require_once 'PHPExcel.php';
require_once 'PHPExcel\IOFactory.php';
require_once 'PHPExcel\Reader\Excel5.php';

$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$objPHPExcel = $objReader->load($uploadfile);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$arr_result=array();
$strs=array();

for($j=2;$j<=$highestRow;$j++)
{
unset($arr_result);
unset($strs);
for($k='A';$k<= $highestColumn;$k++)
{
//读取单元格
$arr_result .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().',';
}
$strs=explode(",",$arr_result);
$sql="insert into php_excel(gid,stu_no,name,age) values ($strs[0],'$strs[1]','$strs[2]',$strs[3])";
echo $sql."<br/>";
mysql_query("set names utf8");
$result=mysql_query($sql) or die("执行错误");

$insert_num=mysql_affected_rows();
if($insert_num>0){
$succ_result+=1;
}else{
$error_result+=1;
}

}
echo "插入成功".$succ_result."条数据!!!<br>";
echo "插入失败".$error_result."条数据!!!";

其中conn.php代码如下:
[php] view plain copy print?
$mysql=mysql_connect("localhost","root","") or die("数据库连接失败!");
mysql_select_db("php_excel",$mysql);
mysql_query("set names utf8");

我的导入效果如下:
至此,从Excel文件读取数据批量导入到Mysql数据库完成。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com