【号码分离】从Excel表格、文本、word文档混乱文字中提取分离11位手机号出来,基于WPF的实现方案

ops/2025/2/8 16:18:46/

应用场景

在市场调研过程中,可能会收集到大量的 Excel 表格、文本报告或 Word 文档,其中包含客户的联系方式。通过提取手机号,可以方便后续的市场推广和客户跟进。

当从不同渠道收集到的数据中包含混乱的文字信息时,需要从中提取出有效的手机号。例如,从用户反馈的文本信息、会议记录等文档中提取手机号,以便进行数据整理和分析。

企业可能会有一些历史的文档资料,其中包含客户的相关信息。通过提取手机号,可以将这些信息整合到客户关系管理系统中,完善客户信息,提高客户服务质量。

具体的实现步骤

1. 创建 WPF 项目

打开 Visual Studio,创建一个新的 WPF 应用程序项目。

2. 设计用户界面(XAML)

在 MainWindow.xaml 中设计一个简单的界面,包含选择文件的按钮、显示提取结果的文本框等。以下是一个示例:

xml

<Window x:Class="PhoneNumberExtractor.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="手机号提取工具" Height="450" Width="800"><Grid><Button Content="选择 Excel 文件" HorizontalAlignment="Left" Margin="20,20,0,0" VerticalAlignment="Top" Width="150" Click="SelectExcelFile_Click"/><Button Content="选择文本文件" HorizontalAlignment="Left" Margin="20,60,0,0" VerticalAlignment="Top" Width="150" Click="SelectTextFile_Click"/><Button Content="选择 Word 文件" HorizontalAlignment="Left" Margin="20,100,0,0" VerticalAlignment="Top" Width="150" Click="SelectWordFile_Click"/><TextBox x:Name="ResultTextBox" HorizontalAlignment="Left" Height="300" Margin="200,20,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="550" IsReadOnly="True"/></Grid>
</Window>
3. 引入必要的 NuGet 包

为了处理不同类型的文件,需要引入相应的 NuGet 包:

  • Excel 文件:使用 ClosedXML 库,它可以方便地读取 Excel 文件。在 Visual Studio 的 “工具” -> “NuGet 包管理器” -> “管理解决方案的 NuGet 程序包” 中搜索并安装 ClosedXML
  • Word 文件:使用 Microsoft.Office.Interop.Word,但需要注意这依赖于本地安装的 Microsoft Word 软件。在项目中添加对 Microsoft.Office.Interop.Word 的引用。
4. 编写代码逻辑(C#)

在 MainWindow.xaml.cs 中实现文件选择和手机号提取的逻辑:

csharp

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using ClosedXML.Excel;
using Microsoft.Office.Interop.Word;namespace PhoneNumberExtractor
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void SelectExcelFile_Click(object sender, RoutedEventArgs e){var dialog = new Microsoft.Win32.OpenFileDialog();dialog.Filter = "Excel 文件|*.xlsx;*.xls";if (dialog.ShowDialog() == true){string filePath = dialog.FileName;var phoneNumbers = ExtractPhoneNumbersFromExcel(filePath);DisplayPhoneNumbers(phoneNumbers);}}private void SelectTextFile_Click(object sender, RoutedEventArgs e){var dialog = new Microsoft.Win32.OpenFileDialog();dialog.Filter = "文本文件|*.txt";if (dialog.ShowDialog() == true){string filePath = dialog.FileName;var phoneNumbers = ExtractPhoneNumbersFromText(filePath);DisplayPhoneNumbers(phoneNumbers);}}private void SelectWordFile_Click(object sender, RoutedEventArgs e){var dialog = new Microsoft.Win32.OpenFileDialog();dialog.Filter = "Word 文件|*.docx;*.doc";if (dialog.ShowDialog() == true){string filePath = dialog.FileName;var phoneNumbers = ExtractPhoneNumbersFromWord(filePath);DisplayPhoneNumbers(phoneNumbers);}}private List<string> ExtractPhoneNumbersFromExcel(string filePath){var phoneNumbers = new List<string>();using (var workbook = new XLWorkbook(filePath)){foreach (var worksheet in workbook.Worksheets){foreach (var row in worksheet.Rows()){foreach (var cell in row.Cells()){string cellValue = cell.Value.ToString();phoneNumbers.AddRange(ExtractPhoneNumbers(cellValue));}}}}return phoneNumbers;}private List<string> ExtractPhoneNumbersFromText(string filePath){string text = File.ReadAllText(filePath);return ExtractPhoneNumbers(text);}private List<string> ExtractPhoneNumbersFromWord(string filePath){var phoneNumbers = new List<string>();var application = new Application();var document = application.Documents.Open(filePath);try{string content = document.Content.Text;phoneNumbers = ExtractPhoneNumbers(content);}finally{document.Close();application.Quit();}return phoneNumbers;}private void DisplayPhoneNumbers(List<string> phoneNumbers){ResultTextBox.Text = string.Join(Environment.NewLine, phoneNumbers);}}
}
5. 运行程序

编译并运行项目,点击相应的按钮选择文件,程序会自动提取其中的 11 位手机号并显示在文本框中。


http://www.ppmy.cn/ops/156760.html

相关文章

Hadoop智能房屋推荐系统 爬虫1w+ 协同过滤余弦函数推荐 代码+视频教程+文档

Hadoop智能房屋推荐系统 爬虫1w 协同过滤余弦函数推荐 带视频教程 毕设设计 课题设计 【Hadoop项目】 1. data.csv上传到hadoop集群环境 2. data.csv数据清洗 3.MapReducer数据汇总处理, 将Reducer的结果数据保存到本地Mysql数据库中 4. SpringbootEchartsMySQL 显示数据分析结…

WebApi使用 (.Net Framework版)

1 创建 使用.Net做web后端&#xff0c;推荐使用.Net Core&#xff0c;微软在此基础上做了很多适配&#xff0c;包括内置Swagger&#xff0c;可以直接启动等等。而.Net Framework版&#xff0c;需要手动配置很多内容。 如果需要调用的项目是基于.Net Framework&#xff0c;那么…

康谋方案 | BEV感知技术:多相机数据采集与高精度时间同步方案

随着自动驾驶技术的快速发展&#xff0c;车辆准确感知周围环境的能力变得至关重要。BEV&#xff08;Birds-Eye-View&#xff0c;鸟瞰图&#xff09;感知技术&#xff0c;以其独特的视角和强大的数据处理能力&#xff0c;正成为自动驾驶领域的一大研究热点。 一、BEV感知技术概…

websocket 实现前后端通信

1.spring boot 引入依赖 <dependency><!-- websocket --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.添加配置类 import org.springframework.context.a…

Java 基于微信小程序的高校失物招领平台小程序(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

【Go语言快速上手】第二部分:Go语言进阶

文章目录 并发编程goroutine&#xff1a;创建和调度 goroutinechannel&#xff1a;无缓冲 channel、有缓冲 channel、select 语句无缓冲 channel有缓冲 channelselect 语句 sync 包&#xff1a;Mutex、RWMutex、WaitGroup 等同步原语Mutex&#xff1a;互斥锁RWMutex&#xff1a…

【蓝桥杯—单片机】第十届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线连接频率测量功能的跳线帽 建立模板明确初始状态显示功能部分频率显示界面第一部分第二部分第三部分 电压显示界面第一部分第二部分第三部分 按键功能部分S4&#xff1a;…

RabbitMQ:windows最新版本4.0.5安装方案

前言 正在尝试学习RabbitMQ&#xff0c;因此考虑在windows上装一个最新版本来实验 关于安装&#xff0c;主要需要注意&#xff1a;先装与目标RabbitMQ版本对应的Erlang版本 这是官方给的对应版本兼容图&#xff1a; 我们需要安装4.0.5版本的RabbitMQ&#xff0c;则需要选择26.2…