相关疑难解决方法(0)

如何在PHP中输出UTF-8 CSV,Excel将正确读取?

我有一个非常简单的事情,只输出一些CSV格式的东西,但它必须是UTF-8.我在TextEdit或TextMate或Dreamweaver中打开这个文件,它正确地显示了UTF-8字符,但是如果我在Excel中打开它,它就是这样做的傻事.这是我在文档的头部所得到的:

header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=\"CHS.csv\"");
Run Code Online (Sandbox Code Playgroud)

除了Excel(Mac,2008)不想正确导入它之外,这一切似乎都具有预期的效果.Excel中没有选项可以"以UTF-8打开"或其他任何东西,所以......我有点恼火.

尽管有很多人遇到同样的问题,我似乎无法在任何地方找到任何明确的解决方案.我最看重的是包含BOM,但我无法弄清楚如何做到这一点.正如你在上面看到的那样,我只是提供echo这些数据,我不会写任何文件.如果我需要,我可以这样做,我不是因为此时似乎不需要它.有帮助吗?

更新:我尝试回显echo pack("CCC", 0xef, 0xbb, 0xbf);我刚刚从试图检测BOM的网站上提取的BOM.但Excel只会在导入时将这三个字符附加到第一个单元格,并且仍会混淆特殊字符.

php csv byte-order-mark utf-8

181
推荐指数
13
解决办法
31万
查看次数

在单元格中添加换行符(CSV)

我想根据描述,尺寸,表面处理等内容导入需要逻辑拆分的产品描述.如何插入换行符,以便在导入文件时它们会显示?

csv excel

32
推荐指数
2
解决办法
10万
查看次数

生成的csv文件中的换行符让我发疯

我正在尝试导出一些数据(存储在数据表中).其中一些值中包含换行符.现在,每当我尝试在excel(2010)中导入文件时,linbreaks都会被识别为新行,而不是实际的换行符.

我搜索了几个小时,看到了很多解决方案,但我似乎无法解决它.

我输出我的csv文件的方式:(变量csvfile是一个字符串构建器)

context.Response.Clear();
context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".csv");
context.Response.Write(csvfile.ToString());
context.Response.End();
Run Code Online (Sandbox Code Playgroud)

当我用excel手动打开它时,它显示正常.但是因为excel 2003不支持文件格式,所以我必须导入它.通过导入,它将换行符(字段中的\n)视为新行.

不幸的是,我不能给你一个我使用的真实数据的例子(它是所有的个人数据),但我可以给你一个如何出错的例子:

Header1,Header2,Header3
"value1","value2","value 3
and this is where its going wrong"
Run Code Online (Sandbox Code Playgroud)

这是一个简单的csv文件,当你导入它时,你会看到它出错的地方.我默认使用双引号封装字段.我也默认从值中删除前导空格.

我在这个看似简单的问题上花了至少2天,但对于我的生活,我无法弄清楚我是如何解决这个问题的.我在同一个问题上看过多个主题,但是那里提供的解决方案似乎都无法解决这个问题.

c# csv excel-2010

9
推荐指数
1
解决办法
9296
查看次数

创建CSV文件时,如何处理字段中的\n和\ r \n字符?

我正在编写一个函数来处理CSV输出fputcsv().我已经解决了\r\n许多人曾经遇到的可怕问题fputcsv()(见代码).

现在我想弄清楚如何处理\r\n字段中包含的字符(不是行结束返回\r\n).是否应该在被传递之前以某种方式逃脱fputcsv()

该函数可以很好地处理大多数字符的转义.但是,当a \n插入字段时,MS Excel和Google Docs都会出现问题,\n并且CSV无法正确加载.

/*
* Revised Get CSV Line using PHP's fputcsv()
* 
* Used to correct an issue with fputcsv()
* http://stackoverflow.com/questions/4080456/fputcsv-and-newline-codes
* MS Excel needs the MS Windows newline format of \r\n
* 
*/

if (!function_exists('get_csv_line'))
{
    function get_csv_line($list,  $seperator = ",", $enclosure = '"', $newline = "\r\n")
    {
        $fp = fopen('php://temp', 'r+'); 

        fputcsv($fp, $list, $seperator, $enclosure ); …
Run Code Online (Sandbox Code Playgroud)

php csv codeigniter

7
推荐指数
1
解决办法
1万
查看次数

Excel 2003中的数据换行符

使用PHP从SQL中提取数据,然后在服务器上创建.csv文件,以便通过fputcsv进行电子邮件发送/下载.除了尝试在Excel(2003)中的字段中获取新行之外,一切都很有效.

当我需要时,我在单元格中得到Product1Product2Product3

Product1
Product2
Product3
Run Code Online (Sandbox Code Playgroud)

我试过单引号,双引号,CR,LF,我正在迅速消除自己的背后.

所以问题是 - 为了达到这个目的,我需要在CSV文件中使用什么字符?

它必须在Excel中工作

[解决方案] - 问题在于通过PHP fputcsv将\ r \n传递给Excel - 我无法以任何方式实现这一点(大量将所需的\ r \n附加到我的实际单元格数据,例如Product1\r \n)建议使用$ lfcr = chr(10).CHR(13); 第一次工作.我想这更像是一个PHP而不是一个Excel问题 - 多亏了所有的共鸣.

php excel

1
推荐指数
1
解决办法
4720
查看次数

标签 统计

csv ×4

php ×3

excel ×2

byte-order-mark ×1

c# ×1

codeigniter ×1

excel-2010 ×1

utf-8 ×1