Speciaal maar even een account voor je aangemaakt

Ik heb voor mijn stage een tijd geleden een paar weken naar een oplossing gezocht en deze uiteindelijk goed kunnen implementeren. Ik zou je aanraden om elke keer dat je een excelfile krijgt deze eenmalig uit te lezen en alles in een echte database te zetten. Excel is niet echt stabiel in samenwerking met php.
Hieronder heb ik een knipsel uit mijn eigen code gezet. Alle queries van mezelf heb ik eruit gelaten.
Allereerst maak je verbinding met excel. Dit moet allemaal op dezelfde computer staan btw. Je moet dus een webserver hebben waar je ook daadwerkelijk achter zit, bijvoorbeeld van je workstation tijdelijk een workstation maken.
Hierna ga je regel voor regel door de excel file. Hierbij haal ik nu uit kolom 1 tm 4 informatie. In kolom 4 heb ik een datum gezet en deze wordt ook nog voor je geconverteerd naar een timestamp(14)
Aan het einde wordt er in een savekolom informatie gezet in de excel file, bijvoorbeeld of het importeren gelukt is ja of nee.
Veel succes!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
| <?php
//file for converting from excel to mysql.
//setting the variables used for opening of the application
$xlfile = "c:\\sisdb\\contracts.xls"; //path to local xls file
$visible = 1; //visible yes or no on the server
$alerts = 0; //alerts yes or no
$savekolom = 17; //kolom where the result will be stored in the xls file
$worksheet = 1; //worksheet of the xls file
$beginrow = 2; //watch out for the headers. Let it start at two if you have one.
$endrow = 16000; //endrow
//load the excel application
$excel = new COM("excel.Application") or die("Unable to start Excel");
echo "Loaded Excel Version ($excel->Version)<br>";
//set visible to the visiblevar (look higher)
$excel->Application->Visible=$visible;
//set alerts to the alertsvar (look higher)
$excel->Application->DisplayAlerts = $alerts;
//open the workbook (look higher)
$workbook = $excel->Workbooks->Open($xlfile);
//open the worksheet (look higher)
$worksheet = $workbook->Worksheets($worksheet);
//check the max location id, used later when inserting into the db
$connection = connectdbextern();
mysql_select_db($db);
//going from beginrow till endrow
for($i=$beginrow;$i<$endrow;$i++){
//these blocks will get the information from a kolom. $i is the rownumber. The names
//speak for themselves. Addslashes is need when a cell contains a / or\ or ' or " for example
$excontract = $worksheet->Cells($i,1);
$excontract -> activate;
$contract = $excontract -> value;
$contract = addslashes($contract);
$excustomer = $worksheet->Cells($i,2);
$excustomer -> activate;
$customer = $excustomer -> value;
$customer = addslashes($customer);
$customer = ltrim($customer,"0");
$exuser = $worksheet->Cells($i,3);
$exuser -> activate;
$user = $excustomer -> value;
$user = addslashes($user);
$user = ltrim($user,"0");
$exenddate = $worksheet->Cells($i,4);
$exenddate -> activate;
$enddate = $exenddate -> value;
//converting of a excel date to mysql date
$enddate = trim($enddate);
if(strlen($enddate)==5){
(int) $l = $enddate + 68569 + 2415019;
(int) $n = (int)(( 4 * $l ) / 146097);
$l = $l - (int)(( 146097 * $n + 3 ) / 4);
(int) $t = (int)(( 4000 * ( $l + 1 ) ) / 1461001);
$l = $l - (int)(( 1461 * $t ) / 4) + 31;
(int) $j = (int)(( 80 * $l ) / 2447);
$day = $l - (int)(( 2447 * $j ) / 80);
$l = (int)($j / 11);
$month = $j + 2 - ( 12 * $l );
$year = 100 * ( $n - 49 ) + $t + $l;
if(strlen($month)==1){
$month="0".$month;
}
if(strlen($day)==1){
$day="0".$day;
}
$year = substr($year,2,2);
$enddate=$day."/".$month."/".$year;
}
$enddate = explode("/", $enddate);
$day = $enddate[0];
$month = $enddate[1];
$year = $enddate[2];
if(strlen($day)==1){
$day="0".$day;
}
if(strlen($month)==1){
$month="0".$month;
}
if(strlen($year)==2){
if($year=="88"){$year="1988";}
if($year=="89"){$year="1989";}
if($year=="90"){$year="1990";}
if($year=="91"){$year="1991";}
if($year=="92"){$year="1992";}
if($year=="93"){$year="1993";}
if($year=="94"){$year="1994";}
if($year=="95"){$year="1995";}
if($year=="96"){$year="1996";}
if($year=="97"){$year="1997";}
if($year=="98"){$year="1998";}
if($year=="99"){$year="1999";}
if($year=="00"){$year="2000";}
if($year=="01"){$year="2001";}
if($year=="02"){$year="2002";}
if($year=="03"){$year="2003";}
if($year=="04"){$year="2004";}
if($year=="05"){$year="2005";}
if($year=="06"){$year="2006";}
if($year=="07"){$year="2007";}
if($year=="08"){$year="2008";}
}
$enddate = $year.$month.$day."000000";
$enddate = addslashes($enddate);
//blablabla, all sorts of queries, not important for you.
//set the savekolom with the result of the checksystem
if($resultcheck_id){
$data = $worksheet->Cells($i,$savekolom);
$data -> activate;
$data -> value="Goed";
}else{
$data = $worksheet->Cells($i,$savekolom);
$data -> activate;
$data -> value="Fout";
}
}
?> |