我有一个简单的脚本,可以将数据从我的数据库输出到CSV文件。
我的问题是,当我导出手机号码时,excel会将它们视为长整数并以科学记数法显示它们。
如果我去格式化单元格并将其更改为数字,它们都可以正常显示。
有没有办法将列设置为整数而不在excel中更改它。
这是我的代码:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Book Reference','Company','Type','Site Name', 'Date', 'Time', 'Name', 'Email', 'Mobile', 'Team ID'));
下面是我的while循环中的代码
// THIS IS WHERE I SET VARIABLES
fputcsv($output, array($booking_reference,$company,$type,$site_name,$date,$time,$name,$email,$mobile,$team_id));
答案 0 :(得分:1)
CSV使用分隔符分隔列数据。特定数据类型没有格式化选项。问题在于Excel自动默认数据类型。手动导入CSV时需要覆盖它。
要执行此操作:对于所有CSV,您可以转到Data -> Get External Data from Text
,然后选择Delimited
项目符号点,选中My data has headers
,点击{{1然后选中Next
列下的Comma
字段,点击Delimiters
,然后 - 这是关键 - 突出显示数据预览中的所有列,然后选择在点击Next
之前Text
下的Column data format
。
这将允许所有CSV文件作为文本导入,并解决所有前导和尾随0问题,所有科学记数问题,并确保每个VLOOKUP在与另一个文本字段进行直接比较时匹配。
答案 1 :(得分:1)
我曾经不得不处理这类事情。 虽然它不是很优雅而且不是纯粹的CSV。 我知道强制Excel从csv-source转换值的唯一方法是使用'formula'作为csv-data中的值。
所以......强制excel将这些数字解释为你可以使用的文本:
....,'=“5551212”',...
答案 2 :(得分:0)
为避免科学计数法,必须将单引号添加到要转换为csv的数组的每个值。
此示例在我的情况下有效。
function insertquote($value) {
return "'$value'";
}
foreach ($list as $ferow) {
fputcsv($fp, array_map(insertquote, $ferrow), ';');
}
答案 3 :(得分:0)
我使用“ Ale DC”答案成功,但是更改了“ insertquote”功能。
try:
element = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))
except (NoSuchElementException, StaleElementReferenceException):
driver.refresh()
element = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))