El ejemplo de Simon no funcionó para mí, y sospecho que es una diferencia de idioma. En C #, así es como se ve mi cadena de formato de trabajo:
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);
y así es como se ve el archivo de salida:
="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,=""
Como se puede ver, el formato en el archivo de salida ="VALUE",
no es lo "=""VALUE""",
que creo que puede ser una convención de Visual Basic.
Estoy usando Excel 2010. A propósito, Google Sheets no abrirá / convertirá un archivo formateado de esta manera. Funcionará si elimina el signo igual de esta manera "VALUE",
: Excel aún abrirá el archivo pero ignorará el hecho de que desea que sus columnas sean cadenas.