Excel解析(二)——HSSFWorkbook

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: MainActivity如下: package cc.textexcel;import java.io.IOException;import org.

MainActivity如下:

package cc.textexcel;

import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import android.app.Activity;
import android.os.Bundle;
/**
 * Demo描述: 利用HSSFWorkbook解析Excel文件
 * 
 * 注意两个问题:
 * 1 关于行的理解.
 *   以表格中最左侧的行数作为标准.数字是几,其对应的为第几行.
 *   最终数字有多大,即代表有多少行.
 *   
 * 2 关于单元格合并的问题,如下的形式
 * 
 * 1          炒豆腐      豆腐三两.....
 * 2          炒青菜      青菜三颗.....
 * 3 特色菜         红烧鱼      鱼儿一条.....
 * 4          炖羊肉      羊肉两斤.....
 * 5          炖牛肉      牛肉两斤.....
 * 
 * 此处有五行数据,他们都属于特色菜.
 * 但是我们要注意在解析此Excel的时候,只有第一行的第一个Cell里面可以取到
 * 我们想要的"特色菜"这个菜系!!!!!
 * 其他行是取到的只是空.要注意这个问题
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		new Thread() {
			public void run() {
				parseExcel();
			};
		}.start();
	}

	private void parseExcel() {
		HSSFWorkbook hssfWorkbook = null;
		try {
			POIFSFileSystem poifsFileSystem = new POIFSFileSystem(getResources().getAssets().open("test.xls"));
			hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
		} catch (IOException e) {
			e.printStackTrace();
		}

		//从工作簿中取出第一张Excel
		HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);

		//从第三行开始解析,第一二行是表头,不是业务所需数据
		int rowIndex = 2;
		String caixiForRows = "";
		HSSFRow hssfRow = hssfSheet.getRow(rowIndex);
		HSSFCell hssfCell = null;
		while ((hssfRow != null) && (hssfRow.getCell(1) != null)) {
			//保存每一行中各字段对应的数据
			String[] rowDataArray = { "", "", "", "", "", "", "" };
			//获取该行中第一个单元格,以便得到菜系
			hssfCell = hssfRow.getCell(0);
			if (hssfCell != null) {
				String caixiTemp = hssfCell.getStringCellValue();
				if (caixiTemp != null&&caixiTemp.trim().length()>=1) {
					System.out.println("菜系那里,所合并单元格的第一行,可得到菜系");
					//获得菜系后将对应值保存到caixiForRows
					caixiForRows= caixiTemp;
				}else{
					System.out.println("菜系那里,所合并单元格除第一行以外的其他行");
				}
			}

			rowDataArray[0] = caixiForRows;

			//得到菜系后,继续后面的单元格.
			//其后的单元格均没有合并操作,所以方便操作
			int cellIndex = 1;
			hssfCell = hssfRow.getCell(cellIndex);
			while ((hssfCell != null) && (hssfCell.toString().length()> 0)) {
				hssfCell = hssfRow.getCell(cellIndex);
				rowDataArray[cellIndex] = hssfCell.getStringCellValue();
				cellIndex++;
				hssfCell = hssfRow.getCell(cellIndex);
			}

			
			//至此完成一行的操作.准备进入下一行的解析.
			rowIndex++;
			hssfRow = hssfSheet.getRow(rowIndex);
		    System.out.println(rowDataArray[0]+" "+rowDataArray[1]+" "+rowDataArray[2]+" "+rowDataArray[3]
		    		           +" "+rowDataArray[4]+" "+rowDataArray[5]+" "+rowDataArray[6]);

		}
	}
}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="利用HSSFWorkbook解析Excel文件"
        android:layout_centerInParent="true" />

</RelativeLayout>




PS:上面的格式没有太对齐,修正一下

 * 1                      炒豆腐      豆腐三两.....
 * 2                      炒青菜      青菜三颗.....
 * 3    特色菜       红烧鱼      鱼儿一条.....
 * 4                      炖羊肉      羊肉两斤.....
 * 5                      炖牛肉      牛肉两斤.....



相关文章
|
3月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
354 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
5月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
333 16
|
5月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
662 5
|
7月前
|
前端开发 PHP
ThinkPHP6之Excel解析
ThinkPHP6之Excel解析
81 0
|
9月前
|
Go
golang解析excel、csv编码格式
golang解析excel、csv编码格式
89 4
|
8月前
|
存储 数据可视化 数据挖掘
|
3月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
416 10
|
15天前
|
分布式计算 Hadoop 大数据
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
44 10
|
5月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
304 4

热门文章

最新文章

推荐镜像

更多