I'm creating a plugin for WordPress that adds in a custom table, and I need to import data into the table from an Excel file, I used Sheetjs and ajax to do this and for the most part it was successful however the date field keeps being set as 00-00-0000.
What is in the Excel file:
What the Database is echoing back:
Here is my javascript code:
jQuery(document).ready( function(){
jQuery('.importsubmit').click(function () {
if (window.FileReader && window.Blob) {
// if FileReader and Blob are supported by the browser then
// get file from #transportationtableimport
var file = jQuery('#transportationtableimport').prop('files')[0];
// set filename
var filename = file.name;
// get file extension
var extension = filename.split('.').pop();
if (extension == 'xlsx' || extension == 'xls') {
// if file extension equals csv then
// create new FileReader
var fileReader = new FileReader();
// FileReader onload function
fileReader.onload = function (e) {
var data = fileReader.result;
var book = XLSX.read(data, { type: 'binary', cellDates: true, cellNF: false, cellText: false});
var sheetnum = 1;
book.SheetNames.forEach(function(sheetname) {
var sheet = XLSX.utils.sheet_to_json(book.Sheets[sheetname], {header:1});
// pass sheet to loadxlsxcsvfile function
loadtransxlsxfile(sheet);
});
};
// read file
fileReader.readAsBinaryString(file);
}
}
});
});
function loadtransxlsxfile(sheet) {
var d;
for (var i = 1; i <= sheet.length-1; i++) {
var x = 0;
var cells = sheet[i];
var y = cells[3];
d = {
action: 'inserttranscsv',
applDate: y
}
// inserttranscsv ajax call
jQuery.ajax({
url: ajax_object.ajaxurl,
type: 'POST',
data: d
})
}
}
Here is my php code:
function inserttranscsv() {
global $wpdb;
$table_name = $wpdb->prefix . 'transportationtable';
$applDate = $_POST['applDate'];
$failed = 0;
$udata = array();
$udata['applDate'] = $applDate;
$updated = $wpdb->insert( $table_name, $udata);
if ( $updated == false ) {
$failed += 1;
}
if ($failed < 1) {
wp_send_json_success(array('good' => true, 'date' => $applDate));
} else {
wp_send_json_success(array('good' => false));
}
}

