我注册也大半年了,注册的原由是老鱼给我推荐纯银的产品文章,那时候我才入职实习,老板推荐的博客自然是要看的。一直想提笔记录一下做产品的心得体会,养成书写习惯,却一直没有下笔。
最近跟竞争对手合并了,大家都忧心忡忡,我也问自己,我这半年做了什么,在新的环境是否拥有竞争力。产品新人做的事情是挺杂的,酒店预订这个产品,处理过客服反馈的投诉,对接过OTA,做了一些小的运营支持系统,但还没在酒店预订主流程做过一个完整的系统设计和项目跟进。那我有什么可以说的故事呢?
今天就针对酒店POI信息说一说,POI基础信息,酒店名、地址、电话等。当基础信息不全或者说质量差的时候,用户会怀疑它的真实性,产生不安全状态:订了这个酒店不会没有吧?订不成功怎么办?这位置不好找吧?当然,大家都懂这个道理,完整的POI信息是转化的第一步。
然后是POI+信息,星级、、设施介绍、交通等。什么决定了用户预订这个酒店,哪几个因素是用户最爱考察的?评价,价格,。哈哈,这是我列出来的,不能代表用户。不过房型列表页增加后订单转化率提高了,无评价无的酒店一般也无订单,没人愿意做第一个吃螃蟹的人。再说说价格,价格这个因素绝对不是单独看的,通常会结合酒店的星级、设施、来做一个“性价比”判断,这是讲的同星级的酒店跟酒店之间的抉择,没有什么权重公式,完全取决于用户的直觉了。之前的点评酒店预订作为跟TA类似的比价平台,同一个酒店对于OTA的选择,用户也绝对不是只选最便宜的。讲到这里其实复杂了些,不同的酒店星级和用户人群对于各种价格策略的抉择也是不同的。四五星级酒店的早餐就是一个经常在投诉里出现的东西,用户对于无早、单早、双早,这中间的价格差其实蛮敏感的。正好去哪儿的接口没有单独的早餐字段,价格和早餐之间的关系模糊了些。但去哪儿自己平台上价格策略的排序跟早餐应该是有一定关系的,当然还有房型、床型、供应商等因子。暂时摸不透他们的公式和排序,如果实在想要知道,要通过数学建模然后扒大量数据下来,哈,可我只是个产品狗,有点扯远了。点评作为一个UGC起家的,我在选择酒店时,倒不是那么想在相册里面看到用户传的。用户传相片都是很随性的,很少有人会清楚告诉你这张对应的什么房型床型以及当时预订的价格。官方相册十分重要,什么房型长什么样,这样的房型当用户在看价格时才能决定愿意不愿意出这个价。
那目前是怎么获取的POI信息:UGC、销售、地图、合作伙伴(已经没了)、竞对等。我们的客单价蛮高,在合并之前却没有针对中高端酒店做定制化的POI信息展示,是种遗憾。而没有自采酒店,意味着酒店行业的很多东西都不了解,列关键字:供应链,商家后台,控房,锁库存……等着跟新老板慢慢学习吧。而酒店价格策略的数据结构,在对接OTA的时候看看接口文档有所了解,下次再来梳理一下。
不管未来如何,现在作为产品新人,不断学习提高,多思考多做竞品分析,多做用户调研和数据分析才是最重要的。
java poi获取Excel sheet页的数量方法如下:
在导出excel时候需要导出多个sheet页,后面sheet页会覆盖前面sheet页的内容。
这么写代码:
HSSFWorkbook workbook = null;
workbook=new HSSFWorkbook();
for(){
//没有现成的文件需要重新计算
HSSFSheet sheet_sin =workbookcreateSheet(month_query1);
sheet_sin= makeJDL(year_query,month_query1,sheet_sin,workbook);
}
如果你使用的是POI那么就是下面的方法
//根据传过来的文件名创建workbook
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
//获得excel文件的sheet数量
int sn = wbgetNumberOfSheets();
//依次处理sheet表单
for (int i = 0; i < sn; i++) {
HSSFSheet sheet = wbgetSheetAt(i);
//获得第i张表单的所有行数
for (int j = 0; j < sheetgetLastRowNum(); j++) {
//获得第j行
HSSFRow row = sheetgetRow(j);
//获得该行的cell数量
for (int k = 0; k < rowgetLastCellNum(); k++) {
//☆☆根据cell号获得cell的所有属性☆☆
HSSFCell cell = rowgetCell((short) k);
//然后你就得到值啦
Systemoutprintln(cellgetRichStringCellValue());
当然也可以通过匹配值得到地址
XlsMain java 类
//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)
import javaioFileInputStream;
import javaioIOException;
import javaioInputStream;
import javautilArrayList;
import javautilList;
import orgapachepoihssfusermodelHSSFCell;
import orgapachepoihssfusermodelHSSFRow;
import orgapachepoihssfusermodelHSSFSheet;
import orgapachepoihssfusermodelHSSFWorkbook;
/
@author Hongten</br>
参考地址:>
下面的代码是向Excel中插入多张的例子:
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg = null;
BufferedImage bufferImg1 = null;
try {
// 先把读进来的放到一个ByteArrayOutputStream中,以便产生ByteArray
// 读入1
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
bufferImg = ImageIOread(new File("d://test11jpg"));
ImageIOwrite(bufferImg, "jpg", byteArrayOut);
// 读入2
ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
bufferImg1 = ImageIOread(new File("d://test22png"));
ImageIOwrite(bufferImg1, "png", byteArrayOut1);
// 创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wbcreateSheet("test picture");
HSSFPatriarch patriarch = sheet1createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255,
(short) 1, 1, (short) 5, 5);
anchorsetAnchorType(3);
HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 255, 255,
(short) 6, 6, (short) 10, 10);
anchor1setAnchorType(3);
// 插入1
patriarchcreatePicture(anchor, wbaddPicture(byteArrayOut
toByteArray(), HSSFWorkbookPICTURE_TYPE_JPEG));
// 插入2
patriarchcreatePicture(anchor1, wbaddPicture(byteArrayOut1
toByteArray(), HSSFWorkbookPICTURE_TYPE_PNG));
fileOut = new FileOutputStream("d:/workbookxls");
// 写入excel文件
wbwrite(fileOut);
fileOutclose();
} catch (IOException io) {
ioprintStackTrace();
Systemoutprintln("erorr : " + iogetMessage());
} finally {
if (fileOut != null) {
try {
fileOutclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
这样执行后的效果如下:(完全按照HSSFClientAnchor设置的参数显示)
这边的效果没有保持原来的倍率,有点失真了,是因为HSSFClientAnchor(0, 0, 255, 255, (short) 1, 1, (short) 5, 5); 这个构造函数的原因。
HSSFClientAnchor构造函数参数的意义如下:
@param dx1 the x coordinate within the first cell
@param dy1 the y coordinate within the first cell
@param dx2 the x coordinate within the second cell
@param dy2 the y coordinate within the second cell
@param col1 the column (0 based) of the first cell
@param row1 the row (0 based) of the first cell
@param col2 the column (0 based) of the second cell
@param row2 the row (0 based) of the second cell
其中dx1,dy1这个点是定义在开始cell中的起始位置。这个点是开始cell的左上为原点,相对比率来确定的。不是绝对坐标。
dx2,dy2这个点是定义在终了cell的终了位置。这个点是终了cell的左上为原点,相对比率来确定的。不是绝对坐标。
col1,row1是定义开始cell。
col2,row2是定义终了cell。
如果我们想要保持原始的大小,改一下上面代码中的下面部分就可以了。
修改前:patriarchcreatePicture(anchor, wbaddPicture(byteArrayOuttoByteArray(), HSSFWorkbookPICTURE_TYPE_JPEG));
修改后:patriarchcreatePicture(anchor, wbaddPicture(byteArrayOut
toByteArray(), HSSFWorkbookPICTURE_TYPE_JPEG))resize(1);
修改后效果如下:
其中resize是放大或缩小的函数。用了这个函数后,HSSFClientAnchor构造函数中的显示的终了cell位置就不起作用了。
PS:抠门货,一点财富值都不舍得掏啊。。。。鄙视你。
以上就是关于第一篇简书-杂谈酒店POI信息全部的内容,包括:第一篇简书-杂谈酒店POI信息、java poi怎么获取Excel sheet页的数量、java中poi如何得到excel 单元格地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)