逗号分隔值或字符分隔值(CSV)是一种标准的“平面文件数据库”格式,用于以纯文本格式存储表格数据,由可选的标题行组成,列出由逗号或制表符或其他分隔符分隔的表字段,后跟一行或多行(换行符换行),将表记录表示为值的分隔列表。换行符和分隔符可以出现在(引用)字段中。
我有一个问题,我想使用爆炸函数拆分字符串变量,但有一个限制,想象一下下一个字符串变量具有下一个值: $data = "3, 18, '我的名字...
CSV 文件看起来有点像这样: user_id、fname、lname、国家/地区 001、蛋糕、巧克力、美国 002,冰淇淋,香草,美国 003,派,南瓜,美国 我想将它们保存到一个数组中,就像......
通过 Oracle Loader 外部表加载字段值中带双引号的 CSV 文件
请求您在以下方面提供帮助和专业知识: UNIX 服务器上的 Oracle DB 19c 要求: CSV 文件每天都会进入 Unix 目录(数据库所在的位置)并加载到
我有一个 CSV 文件,其数据组织如下: 姓名:xyz DNS:xyz 类型:xyz 日期:xyz 姓名:xyz DNS:xyz 类型:xyz 日期:xyz 姓名:xyz DNS:xyz 类型:xyz 日期:xyz 这持续...
我的工作簿中有一张工作表,我想导出到每周更新的 csv 文件。 因此,理想情况下,我希望 VBA 代码导出工作表中的任何数据并覆盖现有的数据...
Python Pandas 提取包含 json 的 csv 列
我想学习 Pandas 框架,所以我从 kaggle.com 找到了带有欧元数据的免费 csv https://www.kaggle.com/datasets/piterfm/football-soccer-uefa-euro-1960-2024/data 但是有很多专栏...
如何在 SSIS 创建的 CSV 文件中的列标题行上方添加整体文件标题行
供应商要求我在 CSV 文件中的列标题行上方添加标题行。它看起来像这样的模式(见下文)。我现在需要做的就是在...
有没有一个pandas习惯用法可以读取带有拼写变体的分类数据的csv文件?
我有一个包含多个分类列的 csv 文件,但由于输入错误,这些列中的大多数都包含混乱的数据(例如,对于
无法通过 Spring Boot 从 S3 存储桶下载超过 40GB 的数据
我在尝试从 S3 Athena 读取超过 40 GB 的 CSV 数据时遇到问题。 2024-06-25 18:16:25.447 警告 509917 --- [pool-6-thread-1] c.a.s.s.internal.S3AbortableInputStream:并非所有字节...
将 CSV 导入 Excel 2010 时端口号“mangle”
更新:我现在看到 CSV 编写器正确解析端口号,即使使用 dialect='excel' 也是如此。不确定我之前看到了什么,但显然之前并没有这样做。我必须缺点...
CSVLink 在 `react-csv` npm 包中生成 HTML 而不是 CSV
我正在尝试从以下数据下载 CSV 文件: 从“react-csv”导入{CSVLink}; 标题 = [ { 标签:“名字”,键:“名字”}, { 标签:“...
我们即将进行一次大型审计,我们希望确保所有员工的 AD 计算机帐户均已停用。我有一个 .csv,它有一个我们使用的唯一标识符 - 我们的架构包括...
我从 Adobe Analytics 中提取报告,并尝试将结果保存在 csv 文件中。这是我的代码和描述: 我从 Adobe Analytics 中提取报告,并尝试将结果保存在 csv 文件中。这是我的代码和描述: <?php include_once('/path/SimpleRestClient.php'); // Creation of csv filepath $adobe_file = $sql_path = '/path/adobe.csv'; // List creation that will be updated with the fields and be put into my CSV file $list = array ( array('page','page_views') // headers ); class API { // Get it form the platform after logging in, User icon, settings private $username = "XXXXX"; private $shared_secret = "XXXXX"; private $postURL = "https://api3.omniture.com/admin/1.4/rest/?method="; private function _request($m, $o) { $nonce = md5(uniqid(php_uname('n'), true)); $nonce_ts = date('c'); $digest = base64_encode(sha1($nonce . $nonce_ts . $this->shared_secret)); $rc = new SimpleRestClient(); $rc -> setOption(CURLOPT_HTTPHEADER, array("X-WSSE: UsernameToken Username=\"$this->username\", PasswordDigest=\"$digest\", Nonce=\"$nonce\", Created=\"$nonce_ts\"")); //var_dump($o); $rc -> postWebRequest($this->postURL . $m, $o); return $rc; } private function _queue($o) { return $this -> _request('Report.Queue', $o); } private function _get($o, $sleep = 120) { $counter = 0; do { if($counter>0){sleep($sleep);} $rc = $this -> _request('Report.Get', $o); $counter++; }while($rc -> getStatusCode() == 400 && json_decode($rc->getWebResponse())->error == 'report_not_ready'); return $rc; } public function get($rsid, $dates, $granularity, $metrics, $elements, $segments) { if($granularity == 'week') { $date = '"dateFrom":"' . $dates['from'] . '", "dateTo":"' . $dates['to'] . '", "dateGranularity":"week",'; } else { $date = '"date":"' . $dates['from'] . '", "dateGranularity":"' . $granularity . '",'; } $reportDescription = '{ "reportDescription": { "reportSuiteID":"' . $rsid . '", ' . $date . ' "metrics":' . $metrics . ', "elements":' . $elements . ', "segments":' . $segments . ' } }'; $queuedReport = $this->_queue($reportDescription); if($queuedReport -> getStatusCode() == 200) { return $this -> _get($queuedReport -> getWebResponse()); } return $queuedReport; } public function get_async( $wait = 15) { $reportDescription ='{ "reportDescription":{ "reportSuiteID":"XXXXX", "dateFrom":"2015-11-01", "dateTo":"2015-11-30", "metrics":[{"id":"pageviews"}], "elements":[{"id":"page","top":"25"}] } }'; $queuedReport = $this->_queue($reportDescription); if($queuedReport -> getStatusCode() == 200) { $return = $this -> _get($queuedReport -> getWebResponse(),$wait); } else { $return = $queuedReport; } return $return; } } $myclass = new API; $output = $myclass->get_async(); 现在我想将 Adobe Analytics 报告的输出传递到 csv 文件。一般来说,我使用这个代码: $fp = fopen($adobe_file, 'w'); while ($row = mysql_fetch_row($output)) { $marks = json_decode($row['responsesJSON'],true); unset($row['responsesJSON']); fputcsv($fp, array_merge(array_values($row),array_values($marks))); // } fclose($fp); 但在本例中输出是一个 JSON 变量。 我的 csv 文件为空,因为列表为空。使用 1.3 我可以轻松做到。 删除这些函数会更好,因为不需要使用多个 php 文件。因此,代码的工作原理如下: <?php include_once('path/SimpleRestClient.php'); // Creation of CSV filepath $adobe_file = 'path/Adobe.csv'; // List creation that will be updated with the fields and be put into my CSV file $list = array ( array('page','page_views') // headers // ADD or DELETE metrics # ); function GetAPIData($method, $data) { $username = "XXXXX"; $shared_secret = "XXXXX"; $postURL = "https://api3.omniture.com/admin/1.4/rest/?method="; // Nonce is a simple unique id to each call to prevent MITM attacks. $nonce = md5(uniqid(php_uname('n'), true)); // The current timestamp in ISO-8601 format $nonce_ts = date('c'); // The Password digest is a concatenation of the nonce, its timestamp and your password (from the same location as your username) which runs through SHA1 and then through a base64 encoding $digest = base64_encode(sha1($nonce . $nonce_ts . $shared_secret)); $rc = new SimpleRestClient(); $rc -> setOption(CURLOPT_HTTPHEADER, array("X-WSSE: UsernameToken Username=\"$username\", PasswordDigest=\"$digest\", Nonce=\"$nonce\", Created=\"$nonce_ts\"")); //var_dump($o); $rc -> postWebRequest($postURL .$method, $data); return $rc; } $method = 'Report.Queue'; $data =' { "reportDescription": { "reportSuiteID":"XXXXX", "dateFrom":"2015-11-01", "dateTo":"2015-11-30", "metrics":[{"id":"pageviews"}], "elements":[{"id":"page","top":"25"}] } }'; $rc=GetAPIData($method, $data); if($rc -> getStatusCode() == 200) // status code 200 is for 'ok' { $counter = 0; do { if($counter>0){sleep($sleep = 120);} $return = GetAPIData('Report.Get', $rc -> getWebResponse()); $counter++; }while($return -> getStatusCode() == 400 && json_decode($return->getWebResponse())->error == 'report_not_ready'); // status code 400 is for 'bad request' // valto 2 $json=json_decode($return->getWebResponse()); foreach ($json->report->data as $el) { echo $el->name.":".$el->counts[0]."\n"; // Adding the data in the CSV file without overwriting the previous data array_push($list, array($el->name, $el->counts[0])); } // xe valto 2 } else { $return = $queuedReport; } $fp = fopen($adobe_file, 'w'); foreach ($list as $fields) { // save rows to the CSV file fputcsv($fp, $fields); } fclose($fp); ?>
我正在尝试将一系列产品转换为 CSV 文件,但似乎没有计划。 CSV 文件是一长行,这是我的代码: 对于($i=0;$i 我正在尝试将一系列产品转换为 CSV 文件,但似乎没有计划。 CSV 文件是一长行,这是我的代码: for($i=0;$i<count($prods);$i++) { $sql = "SELECT * FROM products WHERE id = '".$prods[$i]."'"; $result = $mysqli->query($sql); $info = $result->fetch_array(); } $header = ''; for($i=0;$i<count($info);$i++) { $row = $info[$i]; $line = ''; for($b=0;$b<count($row);$b++) { $value = $row[$b]; if ( ( !isset( $value ) ) || ( $value == "" ) ) { $value = "\t"; } else { $value = str_replace( '"' , '""' , $value ); $value = '"' . $value . '"' . "\t"; } $line .= $value; } $data .= trim( $line ) . "\n"; } $data = str_replace( "\r" , "" , $data ); if ( $data == "" ) { $data = "\n(0) Records Found!\n"; } header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=your_desired_name.xls"); header("Pragma: no-cache"); header("Expires: 0"); array_to_CSV($data); function array_to_CSV($data) { $outstream = fopen("php://output", 'r+'); fputcsv($outstream, $data, ',', '"'); rewind($outstream); $csv = fgets($outstream); fclose($outstream); return $csv; } 此外,标头不会强制下载。我已经复制并粘贴输出并另存为 .csv 编辑 问题已解决: 如果其他人也在寻找同样的事情,找到了更好的方法: $num = 0; $sql = "SELECT id, name, description FROM products"; if($result = $mysqli->query($sql)) { while($p = $result->fetch_array()) { $prod[$num]['id'] = $p['id']; $prod[$num]['name'] = $p['name']; $prod[$num]['description'] = $p['description']; $num++; } } $output = fopen("php://output",'w') or die("Can't open php://output"); header("Content-Type:application/csv"); header("Content-Disposition:attachment;filename=pressurecsv.csv"); fputcsv($output, array('id','name','description')); foreach($prod as $product) { fputcsv($output, $product); } fclose($output) or die("Can't close php://output"); 不要写出值,请考虑使用 fputcsv()。 这可能会立即解决您的问题。 评论注释:我应该提到这将在您的服务器上创建一个文件,因此您需要在输出之前读取该文件的内容,如果您不想保存副本,那么您将完成后需要“链接”文件 这是一个将数组导出到 csv 字符串的简单解决方案: function array2csv($data, $delimiter = ',', $enclosure = '"', $escape_char = "\\") { $f = fopen('php://memory', 'r+'); foreach ($data as $item) { fputcsv($f, $item, $delimiter, $enclosure, $escape_char); } rewind($f); return stream_get_contents($f); } $list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); var_dump(array2csv($list)); 参考 尝试使用; PHP_EOL 终止 CSV 输出中的每个新行。 我假设文本是定界的,但没有移动到下一行? 这是一个 PHP 常量。它将确定您需要的正确行尾。 例如,Windows 使用“ “。当我的输出没有突破到新的一行时,我就用这个绞尽了脑汁。 如何在PHP中编写统一的换行符? 我知道这已经很旧了,我曾经遇到过需要将数组密钥也包含在 CSV 中的情况,所以我更新了 Jesse Q 的脚本来做到这一点。 我使用字符串作为输出,因为 implode 无法添加新行(新行是我添加的,并且应该确实存在)。 请注意,这只适用于单值数组(key, value)。但可以轻松更新以处理多维(key, array())。 function arrayToCsv( array &$fields, $delimiter = ',', $enclosure = '"', $encloseAll = false, $nullToMysqlNull = false ) { $delimiter_esc = preg_quote($delimiter, '/'); $enclosure_esc = preg_quote($enclosure, '/'); $output = ''; foreach ( $fields as $key => $field ) { if ($field === null && $nullToMysqlNull) { $output = ''; continue; } // Enclose fields containing $delimiter, $enclosure or whitespace if ( $encloseAll || preg_match( "/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field ) ) { $output .= $key; $output .= $delimiter; $output .= $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure; $output .= PHP_EOL; } else { $output .= $key; $output .= $delimiter; $output .= $field; $output .= PHP_EOL; } } return $output ; } 就我而言,我的数组是多维的,可能以数组作为值。 所以我创建了这个递归函数来彻底分解数组: function array2csv($array, &$title, &$data) { foreach($array as $key => $value) { if(is_array($value)) { $title .= $key . ","; $data .= "" . ","; array2csv($value, $title, $data); } else { $title .= $key . ","; $data .= '"' . $value . '",'; } } } 由于数组的各个级别不太适合平面 CSV 格式,因此我使用子数组的键创建了一个空白列,作为下一级数据的描述性“介绍”。 示例输出: agentid fname lname empid totals sales leads dish dishnet top200_plus top120 latino base_packages G-adriana ADRIANA EUGENIA PALOMO PAIZ 886 0 19 0 0 0 0 0 您可以轻松删除该“介绍”(描述性)列,但就我而言,我在每个子数组中都有重复的列标题,即 inbound_leads ,因此这在下一部分之前给了我一个中断/标题。 删除: $title .= $key . ","; $data .= "" . ","; 在 is_array() 之后进一步压缩代码并删除多余的列。 由于我想要标题行和数据行,因此我将两个变量传递到函数中,并在完成对函数的调用后,以 PHP_EOL 终止这两个变量: $title .= PHP_EOL; $data .= PHP_EOL; 是的,我知道我多留了一个逗号,但为了简洁起见,我没有在这里处理。 通过内置的 php 函数 fputcsv 将数据数组转换为 csv 'text/csv' 格式,fputcsv 负责处理逗号、引号等。 看看 https://coderwall.com/p/zvzwwa/array-to-comma-separated-string-in-php http://www.php.net/manual/en/function.fputcsv.php 从数组创建 csv 文件的最简单方法是使用 implode() 函数: <?php $arr = array('A','B','C','D'); echo implode(",",$arr); ?> 上述代码的输出将给出: A、B、C、D 它对我有用。 $f=fopen('php://memory','w'); $header=array("asdf ","asdf","asd","Calasdflee","Start Time","End Time" ); fputcsv($f,$header); fputcsv($f,$header); fputcsv($f,$header); fseek($f,0); header('content-type:text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '";'); fpassthru($f);``` 我使用这个简单的函数将每个数组条目创建为 csv: function arrayToCsv($fields, $delimiter = ",", $enclosure = "\"", $escapeChar = "\"") { $fp = fopen('php://temp', 'r+'); fputcsv($fp, $fields, $delimiter, $enclosure, $escapeChar); rewind($fp); $ret = fgets($fp); fclose($fp); return $ret; } 您可以尝试使用下面的代码使用 fputcsv 从数组导出 csv ob_start(); $outputCsv = fopen('php://output', 'w'); fputcsv($outputCsv, ['column 1', 'column 2' 'column 3'], ","); fputcsv($outputCsv, ['','',''], ","); fputcsv($outputCsv, ['value 1', 'value 2' 'value 3'], ","); fputcsv($outputCsv, ['value 11', 'value 21' 'value 31'], ","); fputcsv($outputCsv, ['value 12', 'value 22' 'value 31'], ","); header('Cache-Control: max-age=0'); header("Expires: 0"); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-type: application/csv'); header('Content-Disposition: attachment;filename="doc_logs.csv"'); header("Content-Transfer-Encoding: binary"); fpassthru($outputCsv); fclose($outputCsv); 尝试此解决方案,将所有内容保存到逗号分隔值 (CSV)、制表符分隔值等文件中:array 您需要调用 function ToSeparatedValuesFile($cells, $path = null, $delimiter = ',', $enclosure = '"', $eol = "\n") :string { $path = $path; $fstream = fopen($path, 'r+b'); foreach ($cells as $fields) fputcsv($fstream, $fields, $delimiter, $enclosure, "\\", $eol); fclose($fstream); return $path; } 函数并享受...ToSeparatedValuesFile 参考 享受...
我正在尝试将 CSV 字符串解析为 PHP 中的数组。 CSV 字符串具有以下属性: 分隔符:, 附件:“ 新队: 示例内容: “12345”、“计算机”、“宏碁”、“4”、“瓦尔塔”...
我正在使用工厂下载文件 csv 并将其解析为数组。 我正在尝试使用 angular-csv-import 将字符串解析为数组。 我的字符串看起来像: 名称,总计,表格,活动 ↵דווד,2,1, ↵ו...
单独使用 Python 或 jsonata 从 CSV 文件中切出行
我正在使用 C2Intel Feed 来查找特定的可观察值,当我这样做时,我想提取/切出该行。 例子: https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/
我有一个 CSV 文件,其中包含有关举重运动员的数据。 我对按性别(从男性到女性)、年龄和部门对它们进行排序感到困惑。我尝试了一些代码,但我对如何按
无法从React-Native Expo的资产文件夹访问文件
我有一个从 csv 读取数据的应用程序。我使用文件系统和 Expo Asset 来访问我的文件。在开发过程中,我使用 Google 的 Project IDX 来编写此应用程序并使用 Web v 进行调试...
我正在尝试使用 CSV 数据集在 Flutter 中构建 Myntra 时尚应用程序。 这是我的代码: 导入“包:flutter/material.dart”; 导入'dart:异步'; 导入'包:flutter_spinkit/flutter_spinkit。