通过下面的函数,您可以通过PHP将数据从Excel电子表格导入数据库。
表客户端
包含以下字段:
`id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `address` VARCHAR(255) NOT NULL,
但我需要以下列:$发票、$到期、$value
以导入另一个发票表,该表将包含以下字段:
`client_id` INT(11) NOT NULL AUTO_INCREMENT, `invoice` VARCHAR(20) NOT NULL, `expiry` VARCHAR(20) NOT NULL, `value` VARCHAR(20) NULL DEFAULT NULL,
其中client_id将接收客户端id。
我使用以下方法导入:
控制器
function import()
{
if(isset($_FILES["file"]["name"]))
{
$path = $_FILES["file"]["tmp_name"];
$object = PHPExcel_IOFactory::load($path);
foreach($object->getWorksheetIterator() as $worksheet)
{
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
for($row = 2; $row getCellByColumnAndRow(0, $row)->getValue();
$address = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
$invoice = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
$expiry = $worksheet->getCellByColumnAndRow(3, $row)->getValue();
$value = $worksheet->getCellByColumnAndRow(4, $row)->getValue();
$data[] = [
'name' => $name,
'address' => $address,
'invoice' => $invoice,
'expiry' => $expiry,
'value' => $value
];
}
}
$this->excel_import_model->insert($data);
echo 'Data Imported successfully';
}
}
模型
function insert($data)
{
$this->db->insert_batch('client', $data);
$insert = $this->db->insert_id();
}
我相信你想要这个。
function only_number($str) {
return preg_replace('/[^0-9]/', '', $str);
}
function import()
{
if(isset($_FILES['file']['name']))
{
$path = $_FILES['file']['tmp_name'];
$object = PHPExcel_IOFactory::load($path);
foreach($object->getWorksheetIterator() as $worksheet)
{
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
for($row = 2; $row <= $highestRow; $row++)
{
$cpf_cnpj = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
$name = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
$contract = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
$invoice = $worksheet->getCellByColumnAndRow(3, $row)->getValue();
$expiry = $worksheet->getCellByColumnAndRow(4, $row)->getValue();
$value = $worksheet->getCellByColumnAndRow(5, $row)->getValue();
$address = $worksheet->getCellByColumnAndRow(6, $row)->getValue();
$phone = $worksheet->getCellByColumnAndRow(7, $row)->getValue();
$email = $worksheet->getCellByColumnAndRow(8, $row)->getValue();
$cpf_cnpj = $this->only_number($cpf_cnpj);
$cpf_cnpj = str_pad($cpf_cnpj, 11 , '0' , STR_PAD_LEFT);
$phone = $this->only_number($phone);
$person = [
'cpf_cnpj' => $cpf_cnpj,
];
$result_person = $this->db->get_where('tb_person', ['cpf_cnpj' => $cpf_cnpj])->result();
if(count($result_person) == 0)
{
// insert person
$this->db->insert('tb_person', $person);
$person_id = $this->db->insert_id();
// insert client
$_client = [
'person_id' => $person_id,
];
$this->db->insert('tb_client', $_client);
// insert natural person
$_natural = [
'person_id' => $person_id,
'name' => $name,
];
$this->db->insert('tb_natural_person', $_natural);
// insert address
$_address = [
'address' => $address,
'person_id' => $person_id,
];
$this->db->insert('tb_address', $_address);
}
$person_id = $this->db->select('*')->from('tb_person')->where('cpf_cnpj', $cpf_cnpj)->get()->row()->id;
// phone
$result_phone = $this->db->get_where('tb_phone', ['phone' => $phone])->result();
if(count($result_phone) == 0)
{
$_phone = [
'person_id' => $person_id,
'phone' => $phone,
];
$this->db->insert('tb_phone', $_phone);
}
// email
$result_email = $this->db->get_where('tb_email', ['email' => $email])->result();
if(count($result_email) == 0)
{
$_email = [
'person_id' => $person_id,
'email' => $email,
];
$this->db->insert('tb_email', $_email);
}
$result_contract = $this->db->get_where('tb_contract', ['contract' => $contract])->result();
if(count($result_contract) == 0)
{
// insert contract
$_contract = [
'person_id' => $person_id,
'contract' => $contract,
];
$this->db->insert('tb_contract', $_contract);
$contract_id = $this->db->insert_id();
}
$contract_id = $this->db->select('*')->from('tb_contract')->where('contract', $contract)->get()->row()->id;
$result_invoice = $this->db->get_where('tb_invoice', ['invoice' => $invoice, 'contract_id' => $contract_id])->result();
// invoice
$_invoice = [
'contract_id' => $contract_id,
'person_id' => $person_id,
'invoice' => $invoice,
'expiry' => $expiry,
'value' => $value
];
if(count($result_invoice) == 0)
{
$this->db->insert('tb_invoice', $_invoice);
}
else
{
$this->db->where('invoice', $invoice);
$this->db->where('contract_id', $contract_id);
$this->db->update('tb_invoice', $_invoice);
}
}
}
}
}
表
USE `ci_import`;
DROP TABLE IF EXISTS `tb_person`;
CREATE TABLE IF NOT EXISTS `tb_person` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`cpf_cnpj` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_client`;
CREATE TABLE IF NOT EXISTS `tb_client` (
`person_id` INT(11) NOT NULL,
PRIMARY KEY (`person_id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_natural_person`;
CREATE TABLE IF NOT EXISTS `tb_natural_person` (
`person_id` INT(11) NOT NULL,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`person_id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_address`;
CREATE TABLE IF NOT EXISTS `tb_address` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`person_id` INT(11) NOT NULL,
`address` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_phone`;
CREATE TABLE IF NOT EXISTS `tb_phone` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`person_id` INT(11) NOT NULL,
`phone` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_email`;
CREATE TABLE IF NOT EXISTS `tb_email` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`person_id` INT(11) NOT NULL,
`email` VARCHAR(160) NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_contract`;
CREATE TABLE IF NOT EXISTS `tb_contract` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`contract` VARCHAR(255) NOT NULL,
`person_id` INT(11) NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_invoice`;
CREATE TABLE IF NOT EXISTS `tb_invoice` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`contract_id` INT(11) NOT NULL,
`person_id` INT(11) NOT NULL,
`invoice` VARCHAR(20) NOT NULL,
`expiry` VARCHAR(20) NOT NULL,
`value` VARCHAR(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB
DEFAULT CHARSET=utf8;
我在Laravel 7中使用maatsite的Excel导入库将文件分析和支持数据导入到“分析”数据库表中,它工作得很好。但是,在我选择要导入的Excel文件的视图页面上,我有一个选择下拉和输入文本。我在各自的模型中创建了has很多和属性关系。 处理控制器: 利润进口: profiling_import.blade: 在Excel文件中: 视图: 问题是pemohon、品牌和用户数据没有填入数据库
问题内容: 更新 在我发布此问题之后的第二秒,由于对结果查询的语法突出显示,我看到了出了什么问题:该字符串未以闭合斜线开头。现在我将其更改为: 但是,这提出了一个新问题:为什么PDO对象没有为此向我吐出错误?手动执行查询肯定会返回一个错误,指出没有名为的字段,最后是逗号。为什么我没有收到任何错误?有任何想法吗? PS:关于解决我的问题的SO语法突出显示方面有什么想法吗?:-) 我将原始问题留作参考
问题内容: 我试图截断一个表,但是为什么它不起作用?数据库查询中一定有问题吗? 理想情况下,我想一次性截断所有表-有可能吗? 如果您想知道我用来进行数据库查询的类的内容是什么, 谢谢。 编辑: 下面是我如何调用db对象, 问题答案: 谢谢你们的帮助!这是我的答案,
我使用apache poi将数据从excel读取到mysql表。我用excel表格做了这个,有两个字段。我的代码是这样的, 然后将数据放在arraylist上。ten将其插入数据库。。但是现在我需要系统来获取具有可变克隆数的excel文件。我能做到吗?我只是急需帮助。因此,请帮助我一些想法和可能的一些代码。 先谢谢你,苏吉
问题内容: 我正在尝试将MySQL数据保存到Excel文件,但是Excel单元格出现问题。我所有的文本都放在一个单元格中,我希望每个行值都在单独的Excel单元格中。这是我的代码: 问题答案: 尝试以下方法: PHP部分: 我认为这可以帮助您解决问题。
问题内容: 将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名。 发现了这一点: 如何将CSV文件导入MySQL表 但是唯一的答案是使用GUI而不是Shell? 问题答案: 您无需编写脚本即可从CSV文件中提取信息,而是可以直接将MYSQL链接到该文件并使用以下SQL语法上传信息。 要将Excel文件导入MySQL,请先将其导出为CSV文件。从生成的CSV文件中删除CS