我有一个 CSV 文件,其中一些行的文本/单词包含特殊字符,例如\xc3\xb1,
\n\n发生的情况是,当我尝试导入 CSV 文件时,上面或类似字符的单词将被转换为0。
\n\n我正在使用ToModel
\n\nuse Maatwebsite\\Excel\\Concerns\\ToModel;\nRun Code Online (Sandbox Code Playgroud)\n\n要重现此问题,只需尝试在 CSV 文件的一个单元格中放入一个特殊字符,然后将其导入,如下所示:
\n\nExcel::import(new CsvImport, request()->file('file'));\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n输出:插入的数据中含有特殊字符的数据将被存储为0
\n
注意:直接从Form添加数据不会将特殊字符转换为0,仅在通过导入上传CSV时
\n我想创建两个表的摘要报告,一个是员工表,另一个是sims表.这些表有一对多的关系.我知道我们可以通过使用导出模型的数据,
->fromModel($model)
但有没有办法可以根据这两个表生成报告?
我正在使用 maatwebsite 的 Laravel Excel,但在将数据导出到 xls 文件时遇到问题。我有这个查询,但我不需要显示 xls 文件中的所有列,但我需要在下载文件之前选择所有这些列来执行操作。在我的选择中,我有 8 列,但在标题中,我只有 7 列要显示,但这不起作用,因为 8\xc2\xaa 列也出现了。
\n\n我的职能:
\n\n public function toExcel($id) { $b = Budget::find($id);\n\n$budget = Budget_Item::join('budgets', 'budget__items.id_budget', '=', 'budgets.id')\n ->join('items_sizes', 'budget__items.id_itemSize', '=', 'items_sizes.id')\n ->join('items', 'items_sizes.id_item', '=', 'items.id')\n ->join('material_types', 'items_sizes.id_materialType', '=', 'material_types.id')\n ->select('items.reference AS Refer\xc3\xaancia', 'items.name AS Descri\xc3\xa7\xc3\xa3o', 'items_sizes.size AS Tamanho', 'material_types.material_type AS Material', 'budget__items.amount AS Quantidade', 'items_sizes.unit_price AS Val.Unit\xc3\xa1rio', 'budget__items.price AS Val.Total', 'budget__items.purchasePrice')\n ->where('id_budget', '=', $id)\n ->get();\n\n$budgetUpdate = [];\n$budgetUpdate[] = ['Refer\xc3\xaancia', 'Descri\xc3\xa7\xc3\xa3o', 'Tamanho', 'Material', 'Quantidade', 'Val.Unit\xc3\xa1rio', 'Val.Total'];\nforeach ($budget as …Run Code Online (Sandbox Code Playgroud) 我有一个 CSV 文件,其中数据为横向。ex:
name, test name
age, 20
gender,Male
Run Code Online (Sandbox Code Playgroud)
其中第一列是标题,第二列是数据,我尝试使用laravel maatwebsite/Excel和读取文件后的响应,第一行作为标题。(name和test name)。
有什么方法可以使用 maatwebsite/Excel 在 Laravel 中读取这种类型的 CSV 文件
我想上传大型excel文件。但是因为文件包含很多行,加载速度很慢,我收到了这个错误:
Controller.php 第 457 行中的 FatalErrorException:超过了 120 秒的最大执行时间
我已经把它放在我的 .htaccess 上:
<IfModule mod_php5.c>
php_value max_execution_time 1500
php_value upload_max_filesize 15M
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我还在控制器顶部添加了这个:
ini_set('memory_limit', '3000M');
ini_set('max_execution_time', '0');
Run Code Online (Sandbox Code Playgroud)
我还在 php.ini 中更改了 max_execution_time:
max_execution_time = 300
Run Code Online (Sandbox Code Playgroud)
并在 config.inc.php 上添加:
$cfg['ExecTimeLimit'] = 0;
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它根本不起作用并不断让我陷入那个错误......代码有没有遗漏?任何帮助将不胜感激,谢谢!
如何使用导入excel更新数据库中的数据。我正在使用 laravel 5.7 和 maatwebsite 3.1
\n这是我的控制器:
\npublic function import()\n{\n $data = Excel::toArray(new ProdukImport, request()->file('file')); \n if ($data) {\n DB::table('produk')\n ->where('id_produk', $data['id'])\n ->update($data);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这是我的导入类:
\n<?php\n\n namespace App\\Imports;\n\n use App\\Produk;\n use Maatwebsite\\Excel\\Concerns\\ToModel;\n use Maatwebsite\\Excel\\Concerns\\WithHeadingRow;\n\n\n class ProdukImport implements ToModel, WithHeadingRow\n {\n /**\n * @param array $row\n *\n * @return \\Illuminate\\Database\\Eloquent\\Model|null\n */\n public function model(array $row)\n {\n return new Produk([\n 'id_produk' => $row['id'],\n 'nama_produk' => $row['produk'],\n 'harga_jual' => $row['harga']\n ]);\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n这个 dd($data) 结果:
\narray:1 …Run Code Online (Sandbox Code Playgroud) 我已将 Maatwebsite/Laravel-Excel 从 2.1 升级到 3.1。某些方法已被弃用。
这是 2.1 版的代码。
$data = Excel::load($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
当我使用 2.1 时它可以工作,但升级后,它是错误的
调用未定义的方法 Maatwebsite\Excel\Excel::load()
对于 3.1 版,我尝试更改为
$data = Excel::import($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是正确的语法。
这是我使用 2.1 开发时的完整代码。
$path = $request->file('csv_file')->getRealPath();
if ($request->has('header')) {
$data = Excel::import($path, function($reader) {})->get()->toArray();
} else {
$data = array_map('str_getcsv', file($path));
}
if (count($data) > 0) {
if ($request->has('header')) {
$csv_header_fields = [];
foreach ($data[0] as $key => $value) {
$csv_header_fields[] = $key;
}
}
$csv_data = array_slice($data, 0, 8);
$csv_data_file = …Run Code Online (Sandbox Code Playgroud) 我的 Excel 工作表中有多个工作表,我想获取当前处于活动状态的工作表的名称
使用 Laravel 9 安装 maatwebsite/excel 但出现 phpoffice 和 PHP 版本问题。我正在使用 PHP 8.1,我降级到 PHP 8.0 但仍然无法工作。即使我从 php.ini 文件启用 gd 扩展。
我正在使用官方网站提供的以下命令安装 maatwebsite
composer require maatwebsite/excel
Run Code Online (Sandbox Code Playgroud)
laravel composer-php maatwebsite-excel phpoffice-phpspreadsheet
所以我想安装maatwebsite/excel,并且我尝试了几件事但没有成功。有人能帮我吗。我使用 laravel v 9 和 php v 8.1
> Gymnastiar@LAPTOP-NEA31346 MINGW64
> ~/Documents/Gymnastiar/Project/YamahaL8 $ composer require
> maatwebsite/excel Using version ^3.1 for maatwebsite/excel
> ./composer.json has been updated Running composer update
> maatwebsite/excel Loading composer repositories with package
> information Updating dependencies Your requirements could not be
> resolved to an installable set of packages.
>
> Problem 1
> - maatwebsite/excel[3.1.28, ..., 3.1.30] require phpoffice/phpspreadsheet 1.16.* -> satisfiable by
> phpoffice/phpspreadsheet[1.16.0].
> - maatwebsite/excel[3.1.31, ..., 3.1.x-dev] require phpoffice/phpspreadsheet ^1.18 …Run Code Online (Sandbox Code Playgroud)