这里介绍一个最近写的小程序,对从微博爬取的用户数据的.TXT文档,进行逐行导入Excel表格中,下面是输入文档和输出表格:

微博数据.txt

3891186595   15关注    125粉丝   2402微博      勋章信息    等级信息    Lv.25   当前等级:Lv.25经验值:917距离升级需经验值:603  查看详情a       基本信息    昵称:佳韵李   所在地:其他   性别:女 生日:狮子座   注册时间:    2013-1-07   教育信息    高中:  玉林高中(2012年) 高一1204高二1209    初中:  玉州九中(209年)  091 小学:  东环小学(203年)  4班  标签信息    标签:  欧美音乐    好书  打球  学生一族    吉他  视频音乐    听音乐 低调
5587867413  243关注   123粉丝   158微博       勋章信息    等级信息    Lv.9    当前等级:Lv.9经验值:1078距离升级需经验值:32   查看详情a   会员信息    成长速度:10点/天   成长值:350  下次升级:25天 会员特权:    立即开通会员独享尊贵生活体验!  查看详情a       基本信息    昵称:爷们道明次 所在地:吉林四平 性别:女 感情状况:    单身  生日:摩羯座   注册时间:    2015-04-15  标签信息    标签:  八卦杂谈    美容服饰    读书分享    美食  科学探索
6104677993  212关注   57粉丝    45微博        勋章信息    等级信息    Lv.13   当前等级:Lv.13经验值:1694距离升级需经验值:316 查看详情a       基本信息    昵称:Ciliver12 所在地:四川成都 性别:女 生日:197年10月12日    简介:  如果你给我的,和你给别人的是一样的,那我就不要了。 注册时间:    2017-01-15
2621492711  勋章信息    等级信息    Lv.25   当前等级:Lv.25经验值:76距离升级需经验值:64    查看详情a       37关注    351粉丝   120微博
2955634332  20关注    480粉丝   258微博       基本信息    昵称:KobeGuapiyue  所在地:湖北潜江 性别:男 生日:195年8月31日 个性域名:    htps://weibo.com/723474386  简介:  每个人都缺乏什么    注册时间:    2012-08-18  标签信息    标签:  科比      勋章信息    等级信息    Lv.32   当前等级:Lv.32经验值:13191距离升级需经验值:789    查看详情a   会员信息    成长速度:10点/天   成长值:654  下次升级:35天 会员特权:    立即开通会员独享尊贵生活体验!  查看详情a
5234522180  10关注    56粉丝    8微博     勋章信息    等级信息    Lv.9    当前等级:Lv.9经验值:273距离升级需经验值:97    查看详情a       基本信息    昵称:来福丽美儿 所在地:陕西安  性别:女 注册时间:    2014-07-27
2613763573  291关注   90粉丝    60微博        勋章信息    等级信息    Lv.21   当前等级:Lv.21经验值:5415距离升级需经验值:315 查看详情a       基本信息    昵称:容菎    所在地:山东   性别:男 生日:190年12月1日 简介:  惠中有勒    注册时间:    2012-04-2   标签信息    标签:  台州生活
5227820733微博大咖      6关注 20720粉丝 21微博        勋章信息    等级信息    Lv.35   当前等级:Lv.35经验值:16296距离升级需经验值:564    查看详情a   会员信息    年   成长速度:15点/天   成长值:8415 下次升级:106天    会员特权:    立即开通会员独享尊贵生活体验!  查看详情a       基本信息    昵称:老革命古玩 所在地:其他   性别:男 性取向: 异性恋 博客:  htp://blog.sina.com.cn/haonanren    个性域名:    htps://weibo.com/bg02   简介:  “打工仔向王思聪卖传家宝看病走红网络”事件主人公    注册时间:    2014-07-2   联系信息    邮箱:  Q:   4715801 标签信息    标签:  搞笑  幽默视频    笑话段子    笑话幽默    搞笑幽默
3496611657  291关注   35粉丝    1538微博      达人信息    中级达人    积分:7548.0,   ↓   兴趣:  旅游,音乐,文学,   申请达人?   勋章信息    等级信息    Lv.32   当前等级:Lv.32经验值:13170距离升级需经验值:810    查看详情a       基本信息    昵称:可乐拌饭XI    所在地:江苏州  性别:女 性取向: 异性恋 生日:195年4月23日 血型:AB    简介:  东方神起,还有什么比你们更珍贵。 注册时间:    2013-06-20  联系信息    邮箱:  Q:   1092047371  教育信息    大学:  盐城师范学院(2013年)   美术学院    标签信息    标签:  学生一族    金牛  减肥  创意设计    东方神起    红楼梦 耽美  情感生活    看书  星座运势
1782335951  343关注   47粉丝    386微博       勋章信息    等级信息    Lv.13   当前等级:Lv.13经验值:1712距离升级需经验值:298 查看详情a       基本信息    昵称:勤劳niki    所在地:江苏南京 性别:男 注册时间:    2010-07-23
1817698267  143关注   108粉丝   1020微博      勋章信息    等级信息    Lv.28   当前等级:Lv.28经验值:905距离升级需经验值:65   查看详情a       基本信息    昵称:机会_只留给有准备的人   所在地:河北   性别:女 简介:  自!信!点!好!嘛!被!拒!绝!又!不!会!死!    注册时间:    2010-09-10
2008666405  149关注   567粉丝   120微博       勋章信息    等级信息    Lv.3    当前等级:Lv.3经验值:1418距离升级需经验值:72   查看详情a       勋章信息    等级信息    Lv.3    当前等级:Lv.3经验值:1418距离升级需经验值:72   查看详情a
2336383102  480关注   647粉丝   12352微博     勋章信息    等级信息    Lv.37   当前等级:Lv.37经验值:19796距离升级需经验值:214    查看详情a       基本信息    昵称:Ho_1985   所在地:海外法国 性别:男 注册时间:    201-08-24
5331375333  196关注   94粉丝    472微博       基本信息    昵称:四周型环绕 所在地:浙江   性别:女 生日:195年10月2日 简介:  :??取关你是为了眼球净化    注册时间:    2014-10-14  教育信息    大学:  浙江海洋大学  标签信息    标签:  八卦杂谈        勋章信息    等级信息    Lv.31   当前等级:Lv.31经验值:12934距离升级需经验值:146    查看详情a   会员信息    年   成长速度:15点/天   成长值:7540 下次升级:164天    会员特权:    立即开通会员独享尊贵生活体验!  查看详情a
2336843871  32关注    409粉丝   18593微博     基本信息    昵称:米蛆不死不改名   所在地:上海闵行区    性别:女 生日:196年2月18日 简介:  每天骂街,不喜欢废物,对傻逼过敏。棒唯。  注册时间:    201-08-31       勋章信息    等级信息    Lv.32   当前等级:Lv.32经验值:13946距离升级需经验值:34 查看详情a   会员信息    成长速度:10点/天   成长值:20   下次升级:160天    会员特权:    立即开通会员独享尊贵生活体验!  查看详情a
3899473063  350关注   90粉丝    297微博       勋章信息    等级信息    Lv.14   当前等级:Lv.14经验值:405距离升级需经验值:215  查看详情a       基本信息    昵称:奥巴牛哞  所在地:湖北恩施土家族苗族自治州 性别:男 简介:  人妖也是人^_^    注册时间:    2013-1-12   教育信息    高中:  乾县二中(209年)
2260471457  235关注   630粉丝   286微博       达人信息    高级达人    积分:146.0,    ↓   兴趣:  电影,音乐,时尚,   申请达人?   勋章信息    等级信息    Lv.26   当前等级:Lv.26经验值:8923距离升级需经验值:107 查看详情a
3957953582  210关注   61粉丝    309微博       勋章信息    等级信息    Lv.14   当前等级:Lv.14经验值:5786距离升级需经验值:54  查看详情a       基本信息    昵称:中分看鼻子zw   所在地:安徽合肥 性别:女 生日:天秤座   简介:  面朝大海春暖花开    注册时间:    2013-12-28  教育信息    大学:  湖北师范学院(201年)    美术学院    标签信息    标签:  美容服饰    校园
5508660937  26关注    35粉丝    284微博       勋章信息    等级信息    Lv.14   当前等级:Lv.14经验值:5756距离升级需经验值:574 查看详情a       基本信息    昵称:写不完论文不改名  所在地:内蒙古鄂尔多斯  性别:女 生日:196年1月14日 简介:  如果世界听不明白,对影子表白   注册时间:    2015-02-04  标签信息    标签:  读书分享    美食  名人明星    视频音乐
5319493520微博大咖      8关注 8121粉丝  464微博       勋章信息    等级信息    Lv.2    当前等级:Lv.2经验值:6253距离升级需经验值:7    查看详情a   会员信息    成长速度:10点/天   成长值:2714 下次升级:89天 会员特权:    立即开通会员独享尊贵生活体验!  查看详情a       基本信息    昵称:哎呀逗先生 所在地:北京西城区    性别:男 个性域名:    htps://weibo.com/dbrj   简介:  微喜剧《哎呀逗先生》每天更新,欢迎关注!商务合作Q:15178538(同微信)    注册时间:    2014-10-07  工作信息    公司:  虾娱制片厂   标签信息    标签:  原创视频    逗比日记    搞笑幽默
2133282105  50关注    950粉丝   3872微博      达人信息    黄金达人    积分:2646.2,   ↓   兴趣:  音乐,文学,  申请达人?   勋章信息    等级信息    Lv.40   当前等级:Lv.40经验值:213距离升级需经验值:927  查看详情a       基本信息    昵称:凌煙枯蝶  所在地:江苏无锡 性别:女 生日:194年5月29日 个性域名:    htps://weibo.com/2745947    htps://weibo.com/imygb  简介:  同袍√道友√音乐√欢迎勾搭,朱箫日月温赤√不会主动取关,有的话是新浪的锅。要取关的请双向  注册时间:    201-05-13   联系信息    邮箱:im.ygb@163.com   Q:   1084912575  MSN: im.ygb@163.com 标签信息    标签:  欧美流行音乐  不定期发神经  霹雳布袋戏   茶   传统文化    闽南语 粤语  汉服  TVB 纯音乐
1979067641  31关注    537粉丝   390微博       达人信息    白银达人    积分:8371.6,   ↓   兴趣:  摄影,旅游,时尚,   申请达人?   勋章信息    等级信息    Lv.31   当前等级:Lv.31经验值:12346距离升级需经验值:734    查看详情a       达人信息    白银达人    积分:8371.6,   ↓   兴趣:  摄影,旅游,时尚,   申请达人?   勋章信息    等级信息    Lv.31   当前等级:Lv.31经验值:12346距离升级需经验值:734    查看详情a
5677165111  75关注    12粉丝    39微博        勋章信息    等级信息    Lv.14   当前等级:Lv.14经验值:6729距离升级需经验值:231 查看详情a       基本信息    昵称:张小蟹GeminiFay  所在地:山东   性别:女 生日:197年5月2日  简介:  你年少正当,我也在尽力不辜负好时光。   注册时间:    2015-08-15      基本信息    昵称:张小蟹GeminiFay  所在地:山东   性别:女 生日:197年5月2日  简介:  你年少正当,我也在尽力不辜负好时光。   注册时间:    2015-08-15  

输出表样式:

模式表.xls

问题分析:

我们需要解决两个问题:1.将微博数据.txt中的数据按照不同属性抽取出来;

2.将抽取出来的数据按照Excel表中对应列的属性相应导入进去;

对于第一个问题,文档中每行内容大部分是按照固定属性顺序排列的,但仍有部分行不太规范,因此在文件内容读取过程中进行拆分判断处理的做法显然是不明智的,在这里之所以采用java中的正则表达式,与其强大的字符串模式-匹配和字符串模式-替换方面的优秀品质密不可分。在JDK 1.40版本中,java就已经初遇正则表达式,OK,那么接下来谈谈该怎么使用,首先需要引入java.util.regex包,在这里介绍下,在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。具体而言,Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。而Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例. Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持。

如果还是有些抽象,那么就以本程序中的“教育”属性的匹配为例,贴出代码和注解:

public static String SelectEducation(String line) {String patternEducation = "教育信息\\t(.*?)\\t标签信息"; // 把规则编译成模式对象,结合下面代码中的 MEducation.group(1);匹配出所在行里,前面有"教育信息"加空格,后面为标签信息的部分Pattern PEducation = Pattern.compile(patternEducation);// 把规则编译成模式对象Matcher MEducation = PEducation.matcher(line);// 通过模式对象得到匹配器对象if (MEducation.find()) {// 通过find方法就是查找有没有满足条件的子串return MEducation.group(1);// 提出第一个括号里的内容} else {return "无";}}

1.对于上面代码中出现的find函数,find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用oup()函数。

2.对于正则表达式的语法,这里给出正则表达式手册 :http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

3.对于group函数,下面贴出代码和注释进行讲解 :

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class GroupFun {public static void main(String[] args) {String str = "ThereIsAABC";Pattern pattern = Pattern.compile("A(B)(C)");Matcher matcher = pattern.matcher(str);while (matcher.find()) {System.out.println("Group(0)" + matcher.group(0));// 得到整个匹配System.out.println("Group(1):" + matcher.group(1));// 得到第一个括号内的匹配System.out.println("Group(2):" + matcher.group(2));// 得到第二个括号内的匹配,"括号"即为组,也就是子表达式System.out.println("Start(0):" + matcher.start(0) + " End 0:" + matcher.end(0));// 总匹配的索引System.out.println("Start(1):" + matcher.start(1) + " End 1:" + matcher.end(1));// 第一组匹配的索引System.out.println("Start(2):" + matcher.start(2) + " End 2:" + matcher.end(2));// 第二组匹配的索引System.out.println(str.substring(matcher.start(0), matcher.end(1)));// 从总匹配开始索引到第1组匹配的结束索引之间子串}}}

运行结果:

Group(0):HTY
Group(1):T
Group(2):Y
Start(0):8 End 0:11
Start(1):9 End 1:10
Start(2):10 End 2:11
AB  

至此,将微博数据.txt中的数据按照不同属性抽取出来的问题便得以解决,下面是将每行对应的属性导入到excel中。

此时需要对Excel表格进行操作,需要引入POI的 jar包,下载地址为:https://poi.apache.org/download.html#POI-4.0.0

其中POI是是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。对于创建maven工程的项目,可添加依赖:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version>
</dependency>

其主要功能为四部分:

1.HSSF - 提供读写Microsoft Excel格式档案的功能。

2.XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

3.HWPF - 提供读写Microsoft Word格式档案的功能。

4.HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

5.HDGF - 提供读写Microsoft Visio格式档案的功能。

而对于本程序中需要用到的对excel的操作中,POI中常用的四个对象和excel中的四个对象对应关系如下:

HSSFWorkbook Excel 工作簿workbook
HSSFSheet

Excel 工作表 sheet

HSSFRow

Excel 行

HSSFCell

Excel 单元格

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.*;
import cn.zzu.vo.*;public class Function {public static void main(String args[]) {User user = new User();HSSFWorkbook wb = new HSSFWorkbook();//创建工作簿HSSFSheet sheet = wb.createSheet("FirstSheet");//创建工作表sheet.setColumnWidth(0, 256 * 13);//设置第一列的单元格宽度 HSSFRow row = sheet.createRow(0);//创建行,行号作为参数传给createdRow方法,第一行从0开始计算row.createCell(0).setCellValue(user.getId());//设置第一列,第一行单元格的值row.createCell(1).setCellValue(user.getName());//设置第二列,第一行单元格的值

此时,模式表创建完成,开始导入数据,贴出代码:

try {File file = new File("./微博数据.txt");BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));String line = null;int i = 1;while ((line = br.readLine()) != null) {row = sheet.createRow(i);row.createCell(0).setCellValue(SelectTarget.SelectId(line));row.createCell(1).setCellValue(SelectTarget.SelectName(line));row.createCell(2).setCellValue(SelectTarget.SelectPlace(line));row.createCell(3).setCellValue(SelectTarget.SelectSex(line));row.createCell(4).setCellValue(SelectTarget.SelectBirthday(line));row.createCell(5).setCellValue(SelectTarget.SelectCompany(line));row.createCell(6).setCellValue(SelectTarget.SelectEducation(line));row.createCell(7).setCellValue(SelectTarget.SelectLabel(line));row.createCell(8).setCellValue(SelectTarget.SelectQualification(line));row.createCell(9).setCellValue(SelectTarget.SelectFocus(line));row.createCell(10).setCellValue(SelectTarget.SelectFans(line));row.createCell(11).setCellValue(SelectTarget.SelectNumbers(line));row.createCell(12).setCellValue(SelectTarget.SelectLevel(line));row.createCell(13).setCellValue(SelectTarget.SelectExperience(line));i++;}br.close();FileOutputStream out = new FileOutputStream("./模式表.xls");wb.write(out);out.close();wb.close();} catch (Exception e) {e.printStackTrace();}

至此,程序完成,下面贴出输出结果:

POI操作Excel实例之将文本内容格式化导入Excel相关推荐

  1. Excel将某列文本内容符合要求的转移到另一列中

    1.问题:Excel如何将某列文本内容符合要求的转移到另一列中? 2.方法:使用多个函数组合 =IF(ISERROR(FIND("@",B2)),A1,B2) 解读,使用FIND查 ...

  2. Excel利用函数提取文本内容中的数字

    话不多说在开始之前呢,嗯,需要下载方方格子函数扩展包.然后我们今天要讲的函数呢,是从文本内容当中提取数字.当然这个数字呢包含整数,也包含小数.好了 (方方格子插件) 1.先看动图演示吧 2.首先分解动 ...

  3. python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...

    用python做一个登录程序通过后直接进入某个excel? 是要做python自动化办公吧,这个很不错的,让办公很方便快捷的 python excel进行接口自动化测试,目前只写成了利用多个sheet ...

  4. python读取word内容写入excel_“python循环写入excel“Word文档的内容提取到excel表格中...

    Excel表格内容自动填充到word中的指定位置 使用粘贴链接.在Excel中复制需要进入Word文档中的数据内容,然后在Word文档中,点击选择性粘贴,然后点选粘贴为链接. 如何将EXCEL的文字复 ...

  5. [Excel知识技能] Txt文件数据批量导入Excel

    记录(日期: 2022/5/20) 在实际工作中,遇到过将Txt格式的数据导入到Excel中,为此特意记录以下操作过程,便于日后的回顾和学习 需要导入的文本文件如下图所示: Txt文本数据源 Site ...

  6. html导入excel文件,使用js-xlsx简单实现一个导入excel

    因为是老项目,所以我用的是jquery,css库是bootsharp. 需求是点击按钮实现上传excel转换成表格,代码如下 html 导入Excel 复制代码 js $(".btn-exp ...

  7. python open追加模式_Python文件操作,open读写文件,追加文本内容实例

    1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt ...

  8. 使用POI操作PPT实例

    poi读取ppt的例子,不只是读取ppt里面的文字,还要又文字的样式,布局,图片等.poi包从官网下载即可. HSLF是POI读写PPT的API,例子见官方文档. http://poi.apache. ...

  9. POI操作Excel2007实例二之“SXSSFWorkbook”处理海量数据

    前文链接:POI实现读写Excel2007完整示例--每分钟约处理7000行数据 前文讲述了 POI 读取的基本操作,但后期 经过试验,当写入数据量超过5万条以上时, 很容易报错"内存溢出& ...

最新文章

  1. uboot移植参考资料
  2. 统计每日单量MySQL语句
  3. 方便食品直接上菜 自嗨锅和西贝哪来的勇气?
  4. php gd库 图片水印,php使用GD库实现文字图片水印及缩略图教程
  5. qq掉线咒语:aidusort.as
  6. 如何在 Linux 最小化安装中设置互联网
  7. WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)
  8. 第三十二期:如何摆脱「技术思维」的惯性?
  9. 13.C#的函数练习
  10. JavaScript数据类型之算术运算符(7)
  11. JavaScript留言板效果代码实例
  12. OKR组织敏捷目标和绩效管理第一课 OKR的价值、战略与生成
  13. IDM 6.40.11.2 弹窗的解决思路
  14. Simulink中powergui的FFT分析怎么用m文件实现?
  15. 前沿讲座之计算机图形学
  16. win2008服务器系统玩红警,win10系统玩红警卡死的两种方法
  17. basic计算机编程基础,计算机编程基础(Visual Basic)
  18. SpringBoot整合模板FreeMarker篇
  19. No.2 Earth
  20. Win7系统电脑无法识别U盘启动盘怎么办?

热门文章

  1. Atlas200I DK A2开发者套件,究竟为何方神圣?
  2. 4种方法求2个数公因数
  3. 基于STM32单片机的智能加湿器(Proteus仿真+程序)
  4. 加脱壳、加解密、破解辅助及其源码
  5. vscode中快速生成React代码块-rcc rcf
  6. 名茶事典——【马骝搣】
  7. U8650,root,rom
  8. 具有扩展范围的电容数字转换器
  9. 广告拦截器:不要与他们战斗; 了解他们
  10. (四)秒杀扣库存、订单创建、支付、读各种信息