linux 导入excel文件 路径 与windows的区别,关于windows和Linux的读取文件路径问题

本地操作系统是windows ,测试/生产服务器是linux系统。svn 只是一个代码版本控制,类似于文件服务器,把代码都放在svn上管理。发版就从svn上更新到最全的测试好的代码,打成war包,发布到 测试/生产服务器。

但是今天呢 在导出的时候遇到了一个问题,在本地可以导出,在生产服务器不能导出。后来发现是 系统不一样导致的问题。具体实验如下:

本地环境 windows系统

request.getServletContext().getRealPath("/")+"\\template\\FrameProList.xls"; //这个是windows版本

request.getServletContext().getRealPath("/")+"template/FrameProList.xls"; //这个是服务器版本,Linux系统

我发布到生产的时候用的是本地windows版本,所以报错找不到文件。所以需要改过来。

报错:C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxxcrm/template\\FrameProList.xls(No such file or directory)–linux系统

可以看出 Windows 路径使用"\" , Linux路径 使用 "/"

自己又进行了一些实验:

windows系统

C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxx.crm.web/template/FrameProList.xls

这种其实也是可以的,把路径粘贴到 本地路径进行搜索,依然找得到,enter的一瞬间,windows系统会把单个的“\”转换为

“/”,所以可以找到文件。但是 xxxxx.crm.web\/template 这种,windows系统就无法转换,只能转换单个。具体可以自己在电脑上测试。

结果放下面:

request.getServletContext().getRealPath("/")+"\\template\\FrameProList.xls"; //本地windows版本

C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxx.crm.web\\template\FrameProList.xls

=C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxx.crm.web\+\template\FrameProList.xls

可以访问到文件

我改成这样:

request.getServletContext().getRealPath("/")+"/template/FrameProList.xls"; //本地windows版本

C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxx.crm.web\/template/FrameProList.xls

=C:\katerYi_work\apache-tomcat-7.0\webapps\xxxxx.crm.web\+/template/FrameProList.xls

这样竟然也可以访问到。但是把路径抽出来,放到本地搜索,是搜不出来的。这个不明白。

具体代码如下:

/**

*导出产品清单数据信息--产品清单

*/

@RequestMapping("exportProList.do")

@ResponseBody

public ResponseEntityout( FrameAgreementProListModel model ,HttpServletRequest request,HttpServletResponse response )throws Exception{

if(StringUtils.isNotNullOrEmptyStr(model.getFrameId())){

throw new ExceptionWithCode("frame.0001");//请提供框架Id

}

//查询当前框架下的产品清单列表

model.setLoginName(SystemUtils.getUserModel().getLoginName());

model.setPageSize(100000);

ListproList = mapper.selectFrameProList(model);

//指明-导出文件的模板

String templateFile = request.getServletContext().getRealPath("/")+“template/FrameProlist.xls”;//服务器版本-linux系统

//String templateFile = request.getServletContext().getRealPath("/")+“\\template\\FrameProlist.xls”;//本地windows版本

logger.info("模板文件路径为:"+templateFile);

//框架方法:导出方法------把list列表数据读取到Excel模板文件中。

return readList(proList, templateFile);

}

/**

*list--Excel

*/

public ResponseEntityreadList(Listlist,String templateFile)throws Exception{

//如何把一个list数据读取到一个Excel文件中

//1:获取Excel文件对象

ByteArrayOutputStream baos = new ByteArrayOutputStream();

Workbook wb = Workbook.getWorkbook(new File( templateFile ));

WritableWorkbook wwb = Workbook.createWorkbook(baos,wb);

try{WritableSheet sheet = wwb.getSheet(0);

Cell cell1 = ExcelUtils.getCellByValue(sheet,"行号");

Cell cell2 = ExcelUtils.getCellByValue(sheet,"产品名称");

Cell cell3 = ExcelUtils.getCellByValue(sheet,"内部型号");

Cell cell4 = ExcelUtils.getCellByValue(sheet,"外部型号");

Cell cell5 = ExcelUtils.getCellByValue(sheet,"物料号");

Cell cell6 = ExcelUtils.getCellByValue(sheet,"数量");

Cell cell7 = ExcelUtils.getCellByValue(sheet,"意向单价");

Cell cell8 = ExcelUtils.getCellByValue(sheet,"实际质保期");

Cell cell9 = ExcelUtils.getCellByValue(sheet,"标准质保期");

Cell cell10 = ExcelUtils.getCellByValue(sheet,"单产品毛利");

int row_i = cell1.getRow(); //0

for(FrameAgreementProListModel model : list){

row_i++;

Label label1 = new Label( cell1.getColumn(),row_i,String.format("%d",row_i) );

Label label2 = new Label( cell2.getColumn(),row_i,model.getProName() );

Label label3 = new Label( cell3.getColumn(),row_i,model.getInnerNum() );

Label label4 = new Label( cell4.getColumn(),row_i,model.getOuterNum() );

Label label5 = new Label( cell5.getColumn(),row_i,model.getPartNum() );

Label label6 = new Label( cell6.getColumn(),row_i,model.getQuantity() );

Label label7 = new Label( cell7.getColumn(),row_i,model.getSalesPrice() );

Label label8 = new Label( cell8.getColumn(),row_i,model.getActualWP() );

Label label9 = new Label( cell9.getColumn(),row_i,model.getStandardWP() );

Label label10 = new Label( cell10.getColumn(),row_i,model.getGrossCal() );

sheet.addCell(label1);

sheet.addCell(label2);

sheet.addCell(label3);

sheet.addCell(label4);

sheet.addCell(label5);

sheet.addCell(label6);

sheet.addCell(label7);

sheet.addCell(label8);

sheet.addCell(label9);

sheet.addCell(label10);

}

}finally{

wwb.write();

wwb.close();

wb.close();

baos.close()

}

//设置导出的Excel文件名

HttpHeaders headers = new HttpHeaders();

headers.setContentType(Media.APPLICATION_OCTET_STREAM);

headers.add("Content-disposition","attachment;filename="+URLEncoder.encode(String.format("%s.xls",SystemUtils.getMessages().get("frame.sheet")),"utf-8" ));

return new ResponseEntity(baos.toByteArray(),headers,HttpStatus.OK);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值