我们通常使用EXCEL来编辑游戏里的各种数值。
在服务器端,EXCEL文件采用ApachePOI进行解析。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
POI的代码很庞大,我们基本上只使用带HSSF相关的部分。
HSSF是HorribleSpreadSheetFormat的缩写,也即“讨厌的电子表格格式”。
也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。
通过HSSF,我们可以用纯Java代码来读取、写入、修改Excel文件。
这里,我们只讨论读取的部分。
怎么加载一个EXCEL文件?
读取Excel文件时,首先生成一个POIFSFileSystem对象,
由POIFSFileSystem对象构造一个HSSFWorkbook,
该HSSFWorkbook对象就代表了Excel文档。
代码举例
POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(PATH));
HSSFWorkbookworkbook=newHSSFWorkbook(fs);
怎么找到目标子表?
EXCEL中的子表在POI作为一个个HSSFSheet存在。
我们可以通过表名或该表在EXCEL的索引下标来获得。
如:我们要在chaos.xls中取出“宠物设置”这张子表,代码如下:
HSSFSheet sheet = workbook.getSheet("宠物设置");
当然,我们知道该表是文件中的第三个子表,也可能通过
HSSFSheet sheet = workbook.getSheetAt(2);
<!--EndFragment-->
来取得想要的子表。
不过我们在开发过程中配置文件可能在不断变化,因此不是使用表名检索更为安全。
怎么访问目标行/列?
取得想要的子表后,我们就根据实际需要从HSSFSheet中取得想要的数据了。
在POI中,每行记录为一个HSSFRow,每列数据为一个HSSFCell。
如,我们在解析物品配置表的时候,先通过
HSSFRowcurrRow=sheet.getRow(currRow);
<!--EndFragment-->
取得某条物品记录。
然后再操作这条记录,获取我们想要的列数据。
HSSFCellidCell=currRow.getCell((short)0);
HSSFCellnameCell=currRow.getCell((short)1);
HSSFCelltypeCell=currRow.getCell((short)2);
HSSFCelldescCell=currRow.getCell((short)3);
HSSFCellpriceCell=currRow.getCell((short)4);
HSSFCellparam1Cell=currRow.getCell((short)5);
HSSFCellparam2Cell=currRow.getCell((short)6);
HSSFCelliconCell=currRow.getCell((short)7);
HSSFCellclassCell=currRow.getCell((short)8);
可以看出,每列数据都是一个HSSFCell.
接下来,我们把数据HSSFCell转换为我们实际想要的参数类型。
itemName=nameCell.getRichStringCellValue().getString();
itemDesc=descCell.getRichStringCellValue().getString();
itemType=(byte)typeCell.getNumericCellValue();
itemPrice=(int)priceCell.getNumericCellValue();
itemParam1=(int)param1Cell.getNumericCellValue();
itemParam2=(int)param2Cell.getNumericCellValue();
itemIcon=(byte)iconCell.getNumericCellValue();
itemClass=(byte)classCell.getNumericCellValue();
<!--EndFragment-->
对于数值类型的列,调用getNumericCellValue取得数值后再造型成基础类型。
对于字符串的列,需要调用getRichStringCellValue().getString();
这样,我们就把EXCEL里的数据转换为代码中要使用的数据了。
ItemcurrItem=newItem();
currItem.setItemID(itemID);
currItem.setItemName(itemName);
currItem.setItemType(itemType);
currItem.setItemPrice(itemPrice);
.....
<!--EndFragment-->
<!--EndFragment-->
分享到:
相关推荐
一个简单的POI操作OFFICE的使用介绍,用于JAVA操作WINDOWS的OFFICE文档
由于百度地图sdk过大,这边只有控制器的代码,附上github地址供大家下载(还有其他一些干货,不定时更新),https://github.com/alreadyRight/LearnFromThePast不足之处请帮忙指出,有帮助的话给个star,谢谢!
POI简介,让你轻松了解poi的使用方法,节省你的时间
POI读写excel文件+poi简单文档; POI读写excel文件+poi简单文档。
POI快速入门可以简单使用,可以使用typora打开,可以用来解析excel
介绍了几个小例子,用于是初学者能尽快学会使用POI技术,开发报表功能
关于 poi 的使用 poi挺简单实用的 容易操作。。
POI架包简单
1.3 POI简单读取Excel数据 5 1.4 POI简单写出Excel 9 2.复杂读取 16 2.1 单元格各类型数据读取 16 2.1.1 基本类型 16 2.1.2 日期类型 18 2.2 自定义类型 21 3.复杂写入 22 3.1 复杂写入 22 3.2 多层公式 27 4.常用...
java使用poi技术解析word文档,简易分析,希望对大家有帮助!
简易封装poi, 将文件与对象直接进行映射, 可以快速读写文件。方便快捷的更专注于业务。 什么时候开始资源描述需要50个字以上了,简直看不懂这个操作,是不是蠢啊
1.3 POI简单读取Excel数据 5 1.4 POI简单写出Excel 9 2.复杂读取 16 2.1 单元格各类型数据读取 16 2.1.1 基本类型 16 2.1.2 日期类型 18 2.2 自定义类型 21 3.复杂写入 22 3.1 复杂写入 22 3.2 多层公式 27 4.常用...
如果您是通过交钥匙文本提取(包括最新支持,样式等),强烈建议您使用 Apache Tika,它将构建在POI之上,以提供文本和元数据提取。如果您希望有一些非常简单和独立的东西,或者您希望进行大量修改,那么POI提供的...
POI解析Excel简单实例
通过简单word模板,使用poi对模板写入内容操作
poi生成报表,倒进去直接能运行,新人很值得参考,附带poi最新的包
使用poi将数据库中查询的数据导出到excle中的事例代码
主要: 1.poi文档 2.poi包 本文简单介绍: http://blog.csdn.net/cs_li1126/article/details/10474585
看到现在网上excel转pdf的代码很少,在csdn上找到一个还不能用,只能做简单的转换,只好自己写了一个,代码是一个maven工程,用eclipse创建,支持单元格合并等复杂的excel,同时能同步单元格样式到pdf中。...
适用初学者,包括对word、xls。包涵多了实例!