如何用php实现将excel导入到数据库中
发布网友
发布时间:2022-04-22 03:38
我来回答
共3个回答
懂视网
时间:2022-04-08 00:15

<?php
2 include_once("PHPExcel.php");//引入PHP EXCEL类
3 include_once("medoo.php");//引入数据库类
4 include_once("UploadFile.php");//引入上传类
5 define (‘UPLOAD_PATH‘,‘./Uploads/‘);
6 $fieldArr = array(‘shenfenzhenghao‘, ‘zhigongbianhao‘, ‘gongjijinzhanghao‘, ‘danwei‘, ‘banzu‘, ‘xingming‘);
7
8 if (isset($_FILES[‘excel‘][‘size‘]) && $_FILES[‘excel‘][‘size‘] != null) {
9 $upload = new UploadFile();
10 $upload->maxSize = 10240000;
11 $upload->allowExts = array(‘xls‘);
12 $dirname = UPLOAD_PATH . date(‘Ym‘, time()).‘/‘.date(‘d‘, time()).‘/‘;
13 if (!is_dir($dirname) && !mkdir($dirname, 0777, true)) {
14 echo ‘<script type="text/javascript">alert("目录没有写入权限!!");</script>‘;
15 }
16 $upload->savePath = $dirname;
17 $message = $upload->getErrorMsg();
18 if(!$upload->upload()) {
19 echo ‘<script type="text/javascript">alert("{$message}");</script>‘;
20 }else{
21 $info = $upload->getUploadFileInfo();
22 }
23
24 if(is_array($info[0]) && !empty($info[0])){
25 $savePath = $dirname . $info[0][‘savename‘];
26 }else{
27 echo ‘<script type="text/javascript">alert("上传失败");</script>‘;
28 };
29
30 if(empty($savePath) or !file_exists($savePath)){die(‘file not exists‘);}
31 $PHPReader = new PHPExcel_Reader_Excel2007(); //建立reader对象
32 if(!$PHPReader->canRead($savePath)){
33 $PHPReader = new PHPExcel_Reader_Excel5();
34 if(!$PHPReader->canRead($savePath)){
35 echo ‘no Excel‘;
36 return ;
37 }
38 }
39 $PHPExcel = $PHPReader->load($savePath); //建立excel对象
40 $currentSheet = $PHPExcel->getSheet(0); //**读取excel文件中的指定工作表*/
41 $allColumn = $currentSheet->getHighestColumn(); //**取得最大的列号*/
42 $allRow = $currentSheet->getHighestRow(); //**取得一共有多少行*/
43 $data = array();
44 $row = 1;
45 $rowOne = $rowArr = $main = $time = array();
46 $i = 0;
47 // 取出excel第一行全部字段
48 while(stringFromColumnIndex($i) != $allColumn) {
49 $addr = stringFromColumnIndex($i) . $row;
50 $cell = (String)$currentSheet->getCell($addr)->getValue();
51 if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
52 $cell = $cell->__toString();
53 }
54 $rowOne[$row][stringFromColumnIndex($i)] = $cell;
55 $i++;
56 }
57 $cell = (String)$currentSheet->getCell($allColumn . $row)->getValue();
58 $rowOne[$row][$allColumn] = $cell;
59
60
61 $newArr = array();
62 foreach($rowOne[1] as $key => $value) {
63 $tmp = Pinyin($value,‘utf-8‘);
if(!in_array($tmp, $fieldArr)) {
65 $newArr[$key] = $tmp;
66 }
67 }
68 $db = new medoo(array(
69 ‘database_type‘ => ‘mysql‘,
70 ‘database_name‘ => ‘gzoa‘,
71 ‘server‘ => ‘127.0.0.1‘,
72 ‘username‘ => ‘root‘,
73 ‘password‘ => ‘‘,
74 ‘port‘ => 3306,
75 ‘charset‘ => ‘utf8‘,
76 ‘option‘ => array(PDO::ATTR_CASE => PDO::CASE_NATURAL)
77 ));
78
79 $time = date("Ym", time());
80 $result = $db->select("fields", ["field_id","field","name"], ["time[=]" => $time]);
81 if(!empty($result)) {
82 $db->query("delete from fields where time = {$time}");
83 }
84 foreach($newArr as $key => $value) {
85 $insertData = array(
86 ‘is_main‘ => 0,
87 ‘field‘ => $value,
88 ‘name‘ => $rowOne[1][$key],
‘form_type‘ => ‘number‘,
90 ‘time‘ => $time
91 );
92 $db->insert("fields", $insertData);
93 }
94
95
96 $infoArr = array();
97 foreach($newArr as $key => $value) {
98 foreach($rowOne[1] as $list => $content) {
99 if($key == $list) {
100 $infoArr[$value] = $content;
101 }
102 }
103 }
104 $infoSql = ‘‘;
105 foreach($infoArr as $key => $value) {
106 if(!empty($value)) {
107 $infoSql .= "`{$key}` float(25,2) NOT NULL COMMENT ‘{$value}‘,";
108 }
109 }
110 $infoSql = rtrim($infoSql, ‘,‘);
111
112 $db->query("DROP TABLE `info_{$time}`");
113
114 $db->query("CREATE TABLE IF NOT EXISTS `info_{$time}` (
115 `userid` int(10) unsigned NOT NULL COMMENT ‘用户id‘,
116 `groupid` int(10) unsigned NOT NULL COMMENT ‘用户分组id‘, {$infoSql}
117 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;");
118
119 $field_list = $db->select("fields", ["field_id","field","name"], ["OR" => ["is_main[=]" => 1,"time[=]" => $time]]);
120 foreach($field_list as $key => $value) {
121 foreach($rowOne[1] as $list => $content) {
122 if($content == $value[‘name‘]) {
123 $rowArr[$list] = $value[‘field‘];
124 }
125 }
126 }
127
128 $db->query("delete from info where time = {$time}");
129 for($rowIndex=2;$rowIndex<=$allRow;$rowIndex++){ //循环读取每个单元格的内容。注意行从1开始,列从A开始
130
131 $i = 0;
132 // 取出excel第一行全部字段
133 while(stringFromColumnIndex($i) != $allColumn) {
134 $colnum = stringFromColumnIndex($i);
135 $addr = stringFromColumnIndex($i) . $rowIndex;
136 $cell = (String)$currentSheet->getCell($addr)->getValue();
137 if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
138 $cell = $cell->__toString();
139 }
140 if(!empty($cell)) {
141 if(in_array($rowArr[$colnum], $fieldArr)) {
142 $data1[$rowArr[$colnum]] = $cell;
143 } else {
144 $data2[$rowArr[$colnum]] = $cell;
145 }
146 }
147 $i++;
148 }
149 $cell = (String)$currentSheet->getCell($allColumn . $allRow)->getValue();
150 if(!empty($cell)) {
151 if(in_array($rowArr[$allColumn], $fieldArr)) {
152 $data1[$rowArr[$allColumn]] = $cell;
153 } else {
154 $data2[$rowArr[$allColumn]] = $cell;
155 }
156 }
157
158 $data1[‘time‘] = $time;
159 $data1[‘groupid‘] = $data2[‘groupid‘] = 0;//设置信息分组id
160 $name = isset($data1[‘xingming‘]) ? $data1[‘xingming‘] : ‘‘;//判断如果帐号不存在,则创建帐号,默认密码123456
161 $result = $db->select("admin", ["id","uid","username"], ["username[=]" => $name]);
162 if(empty($result)) {
163 $adminData = array(
1 ‘uid‘ => 3,
165 ‘username‘ => $name,
166 ‘password‘ => md5(‘123456‘)
167 );
168 $db->insert("admin", $adminData);
169 }
170 $userid = $db->insert("info", $data1);
171 if($userid) {
172 $data2[‘userid‘] = $userid;
173 $last_user_id = $db->insert("info_{$time}", $data2);
174 }
175 }
176 echo "<script language=javascript>" .
177 "alert(‘上传成功!‘),parent.location.href=‘../main.php‘ " .
178 "</script>";
179 }
180
181 function stringFromColumnIndex($pColumnIndex = 0)
182 {
183 static $_indexCache = array();
184
185 if (!isset($_indexCache[$pColumnIndex])) {
186 if ($pColumnIndex < 26) {
187 $_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
188 } elseif ($pColumnIndex < 702) {
1 $_indexCache[$pColumnIndex] = chr( + ($pColumnIndex / 26)) . chr(65 + $pColumnIndex % 26);
190 } else { //开源软件:phpfensi.com
191 $_indexCache[$pColumnIndex] = chr( + (($pColumnIndex - 26) / 676)) . chr(65 + ((($pColumnIndex - 26) % 676) / 26)) . chr(65 + $pColumnIndex % 26);
192 }
193 }
194 return $_indexCache[$pColumnIndex];
195 }
196
197
198 ?>
php读取excel文件并导入数据库(表头任意设定)
标签:
热心网友
时间:2022-04-07 21:23
把excel
改为
cvs文件
?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin")
or
die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect)
or
die
(mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for
($i=0;$i
<count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert
into
ceshi
(name,num,dom)
values('$string[0]','$string[1]','$string[2]');";
mysql_query($q)
or
die
(mysql_error());
if
(!mysql_error());
{
echo
"
成功导入数据!";
}
echo
$string[4]."\n";
unset($string);
}
?
热心网友
时间:2022-04-07 22:41
'写入数据库.
oconn.execute(insert
into
users(userid,password)values('
&
rsread.fields(userid)&','
&rsread.fields(password)
&
')
)
rsread.movenextloop%数据库data.mdb表usersid,uesrid,password
excel文件data.xls数据userid
passwordwang
w521zhange
z254hong
h112'================!!!!
asp读取excel注事项!!!!======================'i)将excel97或excel2000生成的xls文件(
book)看成一个数据库,其中的每一个工作表(sheet)
看成数据库表
'ii)ado假设excel中的第一行为字段名.
所以你定义的范围中必须要包括第一行的内容
'iii)excel中的行标题(即字段名)不能够包含数字.
excel的驱动在遇到这种问题时就会出错的。