1

我们可以在代码(ASP/JavaScript)或 Excel 中做些什么,以便逗号分隔的值在 Excel 中的单独列中结束?

4

9 回答 9

2

导入后,您可以转到“工具”->“文本到列...”菜单并指定分隔符。

于 2008-11-15T00:34:47.490 回答
1

正如 Chei 所指出的,Excel(列表分隔符)选项的本地化或更改可能会导致错误行为。

我建议您使用 Open XML 以获得更安全的输出。

查看在 ASP.NET 中生成 Excel 文件

于 2008-11-14T13:40:57.903 回答
1

我只是尝试使用制表符而不是逗号作为字段分隔符,它在 Excel 2007 中工作

(至少我认为是 2007 年,在愚蠢的功能区中找不到帮助/关于)

于 2011-04-14T05:32:08.667 回答
0

你知道 CSV 文件是否有字节顺序标记头吗?也许它没有 BOM,或者它不是区域设置的正确 BOM。

于 2008-11-17T03:37:41.270 回答
0

Excel 似乎对 UTF-16/UTF-8 字节顺序标记感到困惑,因此请尝试摆脱它们。

对于 CSV,单元格的内容可以是 unicode 字符,但分隔符、引号和换行符始终必须是 ASCII。您可以将 CSV 视为始终是 ASCII,但每个单元格都是二进制的 blob,并且可能是一些 unicode 文本。

此外,请查看:http ://www.creativyst.com/Doc/Articles/CSV/CSV01.htm了解更多信息。

于 2009-08-24T21:49:58.110 回答
0

如果您使用“,” Excel 2007 会读取它,但不是 2003。如果您使用“;”,则相反。

因此,最好的方法是生成一个 html 表并将其输出为 .xls。Excel 2007 将询问其是否来自受信任的来源。

以下是如何执行此操作的代码示例:

private void ExportToXLSFromDataTable(DataTable dtExport, string filename)
{
    StringBuilder dataToExport = new StringBuilder();

    dataToExport.Append("<table>");
    dataToExport.Append("<tr>");

    foreach (DataColumn dCol in dtExport.Columns)
    {
        dataToExport.Append("<td>");
        dataToExport.Append(Server.HtmlEncode(dCol.ColumnName));
        dataToExport.Append("</td>");
    }

    dataToExport.Append("</tr>");

    foreach (DataRow dRow in dtExport.Rows)
    {
        dataToExport.Append("<tr>");
        foreach (object obj in dRow.ItemArray)
        {
            dataToExport.Append("<td>");
            dataToExport.Append(Server.HtmlEncode(obj.ToString()));
            dataToExport.Append("</td>");
        }
        dataToExport.Append("</tr>");
    }

    dataToExport.Append("</table>");

    if (!string.IsNullOrEmpty(dataToExport.ToString()))
    {
        Response.Clear();

        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);

        HttpContext.Current.Response.Write(dataToExport.ToString());
        HttpContext.Current.Response.End();
    }
}
于 2009-05-21T15:18:18.103 回答
0

如果您通过 Excel 的“文件 --> 打开”菜单打开文件,那么它将分隔单元格中的值。

于 2008-11-14T13:21:44.353 回答
0

Excel 的不同本地化可能使用不同的字符来分隔列。尝试使用“;” 而不是“,”,看看它是否有帮助。

于 2008-11-14T13:22:18.473 回答
0

您可以尝试将文件另存为 .txt,而不是 .csv,这会强制 Excel 将文本行解析为列

于 2008-12-18T16:29:18.427 回答