2012-08-22 41 views
3

我正在使用将我的客户端数据导出到CSV的ASP.NET应用程序,我需要我的客户端电话号码与前导零。 我需要的电话号码没有“ - ”且没有引号,并且由于我的应用程序的性质,我不能使用第三方产品,如EPPLUS。 我试图放一个空格,让CSV“理解”我需要电话号码作为文本,但这看起来不正确。数字字段在c中编写CSV时丢失前导零#

我想知道如何使excel包括领先的零,而不使用第三方产品。

感谢

+0

如何写入CSV? – Tigran

+0

在我的一个应用程序中,我记得预先在单引号前加零字段。只需一个,在值的开始 – Dimitri

回答

19

更改与下面的格式保存在CSV数据:

="00023423" 

CSV例如:

David,Sooo,="00023423",World 

这将显示在Excel 00023423,而不是23423.

+0

这会将值转换为*公式*。正确的方法是预先加一个单引号。 –

0

如果你已经知道有多少数字在里面的手机,你可以像这样

phoneNumber.ToString("000000000000")

在这个例子中,我认为phoneNumberint和所需的长度的数字是12

5

打印的电话号码,以CSV与预谋'(单引号),所以它看起来像:

"Some Name","'0000121212" 

Excel中应该把这个作为0000121212字符串即可。

+1

感谢您的回答,但它包含了前面的内容... –

+0

好吧,所以请尝试在等号前加双引号,如下所示:''Some Name“,=”'0000121212“ '(无论是单引号还是单引号)。 UPD:我尝试没有内部单引号,它工作正常。 –

+0

我有类似的问题与Excel将其转换为科学格式的长整数类似的问题,当我这样做=“98127398217398213982173918” –

4
public void CreatingCsvFiles(Client client) 
    { 
     string filePath = "Your path of the location" + "filename.csv"; 
     if (!File.Exists(filePath)) 
     { 
      File.Create(filePath).Close(); 
     } 
     string delimiter = ","; 
     string[][] output = new string[][]{ 
     new string[]{ "=\"" + client.phone + "\"", client.name } 
     }; 
     int length = output.GetLength(0); 
     StringBuilder sb = new StringBuilder(); 
     for (int index = 0; index < length; index++) 
     sb.AppendLine(string.Join(delimiter, output[index])); 
     File.AppendAllText(filePath, sb.ToString()); 
    } 

灵感来自http://softwaretipz.com/c-sharp-code-to-create-a-csv-file-and-write-data-into-it/

的重要组成部分:

"=\"" + client.phone + "\"", client.name 

如果电话号码是一个int,当然你加的ToString()。

+0

不错,这在csv中按预期工作 – desflan