Simon の例は私にはうまくいきませんでしたが、言語の違いだと思います。C#では、私の作業フォーマット文字列は以下のようになっています。
var linebreak = (i++ == list.Count) ? "" : "\r\n";
csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);
そして、出力ファイルは以下のようになります。
="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""
見ての通り、出力ファイルのフォーマットは="VALUE",
ではなく"=""VALUE""",
となっています。
私はExcel2010を使用しています。ちなみに、Google Sheetsでは、このようなフォーマットのファイルを開いたり変換したりすることはできません。等号を取り除いて"VALUE",
にすれば問題ありませんが、Excelはファイルを開きますが、列を文字列にしたいという事実は無視します。