コード (ASP/JavaScript) または Excel で、カンマ区切りの値が Excel の個別の列になるようにできることはありますか?
9 に答える
インポートしたら、[ツール] -> [テキストを列に...] メニューに移動し、区切り文字を指定できます。
カンマの代わりにフィールド区切り文字にタブ文字を使用してみましたが、Excel2007で機能しました
(少なくとも2007年だと思いますが、愚かなリボンにヘルプ/バージョン情報が見つかりません)
Chei が指摘したように、ローカライズまたは Excel のオプション (リストの区切り文字) の変更により、誤った動作が発生する可能性があります。
より安全な出力のために Open XML を使用することをお勧めします。
ASP.NET での Excel ファイルの生成を確認してください。
ExcelはUTF-16/UTF-8バイト順マークで混乱しているようですので、それらを取り除いてみてください。
CSVの場合、セルの内容はUnicode文字にすることができますが、区切り文字、引用符、および改行文字は常にASCIIでなければなりません。CSVは常にASCIIであると考えることができますが、各セルはバイナリのブロブであり、Unicodeテキストである可能性があります。
また、詳細については、 http ://www.creativyst.com/Doc/Articles/CSV/CSV01.htmを参照してください。
CSVファイルにバイト順マークヘッダーがあるかどうか知っていますか?BOMがないか、ロケールに適したBOMではない可能性があります。
ファイルを .csv ではなく .txt として保存してみてください。これにより、Excel はテキスト行を列に解析するようになります。
"," を使用すると、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();
}
}
Excel の [ファイル --> 開く] メニューからファイルを開くと、セル内の値が区切られます。
Excel のローカライズが異なれば、列を区切るために異なる文字が使用される場合があります。「;」を使ってみてください 「、」の代わりに、それが役立つかどうかを確認します。