C#中使用EPPlus读取Excel数据后实现电话号码格式转换的技术咨询
解决方法:添加Newnumber字段并格式化Phone为纯数字
我来帮你一步步实现这个需求,整个过程分为修改实体类、实现格式转换逻辑、在读取Excel时赋值三个核心步骤,具体如下:
1. 修改Customer类,添加Newnumber属性
先给你的Customer类新增一个Newnumber字段,用来存储格式化后的纯数字手机号:
public class Customer { public string Name { get; set; } public string Phone { get; set; } public string Email { get; set; } public string Contact { get; set; } // 新增字段:存储去除前缀和空格后的纯数字手机号 public string Newnumber { get; set; } }
2. 编写格式转换的工具方法
我们可以写一个静态方法,专门处理手机号的格式转换——它接收原始的Phone字符串,过滤掉所有非数字字符(包括(+xxx)前缀和空格),返回纯数字结果。把这个方法放在你的Program类里即可:
private static string FormatPhoneToPureNumber(string rawPhone) { // 如果原始手机号为空,直接返回空字符串 if (string.IsNullOrWhiteSpace(rawPhone)) return string.Empty; // 使用正则表达式替换所有非数字字符为空,只保留数字 return System.Text.RegularExpressions.Regex.Replace(rawPhone, @"[^\d]", ""); }
这个方法通用性很强:不管原始格式是(+123) 123 456 789还是其他带符号/空格的格式,都能准确提取出纯数字。
3. 在读取Excel的代码中给Newnumber赋值
在ReadXls方法创建Customer对象的位置,给Phone赋值之后,直接调用上面的转换方法给Newnumber赋值:
Customer customer = new(); customer.Name = worksheet.Cells[row, 4].Text.Trim(); customer.Phone = worksheet.Cells[row, 5].Text.Trim(); // 调用转换方法,生成纯数字的Newnumber customer.Newnumber = FormatPhoneToPureNumber(customer.Phone); customer.Contact = worksheet.Cells[row, 7].Text.Trim(); customer.Email = worksheet.Cells[row, 8].Text.Trim(); response.Add(customer);
4. (可选)在Main方法中输出Newnumber验证效果
如果你想直观看到转换后的结果,可以修改Main方法的输出逻辑,把Newnumber也打印出来:
static void Main(string[] args) { var customers = ReadXls(); foreach (var item in customers) { Console.WriteLine($"Name:{item.Name}\nPhone:{item.Phone}\nNew Number:{item.Newnumber}\nContact:{item.Contact}\nEmail:{item.Email}\n"); } }
这样整个流程就完成了:读取Excel的原始手机号后,自动转换为纯数字存入Newnumber字段,后续你可以直接使用这个格式化后的字段进行其他操作。
内容的提问来源于stack exchange,提问作者Camila Godinho




