1. poi报表导入导出
合并单元格换行方式跟普通单元格的换行方式一样,有两种方式,一个是设置自动换行,一个是设置强制换行,下面分别介绍。
1、自动换行。
选中合并单元格,右键设置单元格格式,在对齐命令中,选中自动换行。这样改变合并单元格的列宽,数据就跟随列宽的大小自动换行。
2、强制换行。
选中合并单元格,将光标放在需要换行的位置,按下alt+enter键,强制换行。强制换行的数据,不会因单元格列宽的大小而改变。
2. POI导出
利用poi操作excel。同一个workbook 中创建的 cellstyle 不能超过4000 。估计你是遍历单元格创建生成的吧?可考虑创建map集合缓存必要cellstyle格式。已存在格式直接设置使用,不存在的再创建。一般情况下,一个workbook中使用到的cellstyle格式不会超过500!
3. poi excel导出
导出时自由选择路径的代码如下:
1、后台输出Excel文件代码:
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + path);
response.setContentType("Content-Type:application/vnd.ms-excel ");
wb.write(output);
output.close();
2、前端代码:
window.open("getExcelList","_blank");
4. poi数据导入
如果表头固定在第一行,可以扫描表头,获得你需要的数据的列号,例如下面的代码寻找姓名、性别、手机的列号: var c_name,c_sex,c_mobile; for (i=0;i
5. poi大量数据导出
通过POI的使用获取到要导出的Excel工作簿,将其写入输出流。
然后输出流内容会随响应信息传导浏览器前端,弹出保存窗口,选择你要保存的位置。
6. poi怎么实现excel的导入导出
首先要导入spring相关包,poi,和fileupload包,我是使用maven构建的。萊垍頭條
一.导入excel條萊垍頭
(1)使用spring上传文件條萊垍頭
a.前台页面提交萊垍頭條
<form name="excelImportForm" action="${pageContext.request.contextPath}/brand/importBrandSort" method="post" onsubmit="return checkImportPath();" enctype="multipart/form-data" id="excelImportForm">萊垍頭條
<input type="hidden" name="ids" id="ids">萊垍頭條
<div >垍頭條萊
<div >萊垍頭條
<label ><input id="excel_file" type="file" name="filename" accept="xls"/></label>萊垍頭條
<div >萊垍頭條
<input id="excel_button" type="submit" value="导入Excel"/>萊垍頭條
</div>萊垍頭條
</div>萊垍頭條
</div>萊垍頭條
<div >條萊垍頭
<button type="button" data-dismiss="modal" onClick="uncheckBoxes();">取消</button>萊垍頭條
</div>萊垍頭條
b.后台spring的controller进行相关操作,这里主要讲的是使用spring上传文件,和读取文件信息。頭條萊垍
使用spring上传文件之前,需要配置bean。頭條萊垍
<bean id="multipartResolver" ></bean>@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)垍頭條萊
public ModelAndView importBrandSort(@RequestParam("filename") MultipartFile file,萊垍頭條
HttpServletRequest request,HttpServletResponse response) throws Exception {萊垍頭條
String temp = request.getSession().getServletContext()萊垍頭條
.getRealPath(File.separator)萊垍頭條
+ "temp"; // 临时目录頭條萊垍
File tempFile = new File(temp);萊垍頭條
if (!tempFile.exists()) {萊垍頭條
tempFile.mkdirs();萊垍頭條
}萊垍頭條
DiskFileUpload fu = new DiskFileUpload();垍頭條萊
fu.setSizeMax(10 * 1024 * 1024); // 设置允许用户上传文件大小,单位:位萊垍頭條
fu.setSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:位萊垍頭條
fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录頭條萊垍
// 开始读取上传信息萊垍頭條
//萊垍頭條
int index = 0;萊垍頭條
/* List fileItems = null;萊垍頭條
try {萊垍頭條
fileItems = fu.parseRequest(request);萊垍頭條
}頭條萊垍
catch (Exception e) {萊垍頭條
e.printStackTrace();頭條萊垍
}萊垍頭條
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件垍頭條萊
FileItem fileItem = null;萊垍頭條
while (iter.hasNext()) {萊垍頭條
FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表单信息萊垍頭條
if (!item.isFormField()) {萊垍頭條
fileItem = item;萊垍頭條
// index++;萊垍頭條
}條萊垍頭
}垍頭條萊
if (fileItem == null)垍頭條萊
return null;萊垍頭條
*/條萊垍頭
if (file == null)垍頭條萊
return null;萊垍頭條
logger.info(file.getOriginalFilename());萊垍頭條
String name = file.getOriginalFilename();// 获取上传文件名,包括路径萊垍頭條
//name = name.substring(name.lastIndexOf("\\") + 1);// 从全路径中提取文件名垍頭條萊
long size = file.getSize();萊垍頭條
if ((name == null || name.equals("")) && size == 0)頭條萊垍
return null;垍頭條萊
InputStream in = file.getInputStream();條萊垍頭
List<BrandMobileInfoEntity> BrandMobileInfos = brandService頭條萊垍
.importBrandPeriodSort(in);條萊垍頭
// 改为人工刷新缓存KeyContextManager.clearPeriodCacheData(new萊垍頭條
// PeriodDimensions());// 清理所有缓存垍頭條萊
int count = BrandMobileInfos.size();萊垍頭條
String strAlertMsg ="";垍頭條萊
if(count!=0){垍頭條萊
strAlertMsg= "成功导入" + count + "条!";萊垍頭條
}else {萊垍頭條
strAlertMsg = "导入失败!";條萊垍頭
}萊垍頭條
logger.info(strAlertMsg);垍頭條萊
//request.setAttribute("brandPeriodSortList", BrandMobileInfos);萊垍頭條
//request.setAttribute("strAlertMsg", strAlertMsg);萊垍頭條
request.getSession().setAttribute("msg",strAlertMsg);萊垍頭條
return get(request, response);萊垍頭條
//return null;頭條萊垍
}萊垍頭條
代码中的注释部分是如果不使用spring的方式,如何拿到提交过来的文件名(需要是要apache的一些工具包),其实使用spring的也是一样,只是已经做好了封装,方便我们写代码。萊垍頭條
代码中的后半部分是读取完上传文文件的信息和对数据库进行更新之后,输出到前台页面的信息。萊垍頭條
上述代码中: InputStream in = file.getInputStream();萊垍頭條
List<BrandMobileInfoEntity> BrandMobileInfos = brandService萊垍頭條
.importBrandPeriodSort(in);读取excel的信息。萊垍頭條
(2)使用poi读取excel萊垍頭條
a.更新数据库萊垍頭條
@Override萊垍頭條
public List<BrandMobileInfoEntity> importBrandPeriodSort(InputStream in) throws Exception {萊垍頭條
List<BrandMobileInfoEntity> brandMobileInfos = readBrandPeriodSorXls(in);條萊垍頭
for (BrandMobileInfoEntity brandMobileInfo : brandMobileInfos) {萊垍頭條
mapper.updateByConditions(brandMobileInfo);萊垍頭條
}萊垍頭條
return brandMobileInfos;頭條萊垍
}垍頭條萊
这部分是sevice层的代码,用于读取excel信息之后更新数据库数据,我这里是使用mybatis。定义一个类BrandMobileInfoEntity,用与保存excel表每一行的信息,而List< BrandMobileInfoEntity > 则保存了全部信息,利用这些信息对数据库进行更新。條萊垍頭
b.读取excel信息萊垍頭條
private List<BrandMobileInfoEntity> readBrandPeriodSorXls(InputStream is)萊垍頭條
throws IOException, ParseException {萊垍頭條
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);萊垍頭條
List<BrandMobileInfoEntity> brandMobileInfos = new ArrayList<BrandMobileInfoEntity>();萊垍頭條
BrandMobileInfoEntity brandMobileInfo;萊垍頭條
// 循环工作表Sheet萊垍頭條
for (int numSheet = 0;萊垍頭條
numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {萊垍頭條
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);萊垍頭條
if (hssfSheet == null) {頭條萊垍
continue;垍頭條萊
}萊垍頭條
// 循环行Row萊垍頭條
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {萊垍頭條
brandMobileInfo = new BrandMobileInfoEntity();垍頭條萊
HSSFRow hssfRow = hssfSheet.getRow(rowNum);萊垍頭條
for (int i = 0; i < hssfRow.getLastCellNum(); i++) {萊垍頭條
HSSFCell brandIdHSSFCell = hssfRow.getCell(i);萊垍頭條
if (i == 0) {萊垍頭條
brandMobileInfo.setBrandId(Integer萊垍頭條
.parseInt(getCellValue(brandIdHSSFCell)));萊垍頭條
} else if (i == 1) {萊垍頭條
continue;垍頭條萊
} else if (i == 2) {萊垍頭條
brandMobileInfo.setMobileShowFrom(Integer.parseInt(getCellValue(brandIdHSSFCell)));萊垍頭條
} else if (i == 3) {條萊垍頭
brandMobileInfo.setMobileShowTo(Integer.parseInt(getCellValue(brandIdHSSFCell)));頭條萊垍
} else if (i == 4) {萊垍頭條
brandMobileInfo.setSellMarkValue(getCellValue(brandIdHSSFCell));萊垍頭條
} else if (i == 5) {條萊垍頭
brandMobileInfo.setWarehouse(getCellValue(brandIdHSSFCell));頭條萊垍
} else if (i ==萊垍頭條
7. poi导入导出excel
首先你要明白导入文件步骤:
1.实例化excel读取对象
2.加载excel文件
全部加载
选择加载
3.读取excel文件
全部读取
逐行读取
以下你看看那个更加适应你
顺便列出几个其他语言导入Excel文件,希望对你有帮助
PHP导入Excel文件
java把Excel文件数据导入数据库
PHP实现导出Excel文件通用方法
JXL生成的excel文件+JAVA文件下载功能
Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载
java处理Excel文件---excel文件的创建,删除,写入,读取
Java读取Excel文件
jxl解析Excel文件
JXL操作Excel文件
java POI读取Excel文件
java使用poi读取excel文件代码示例
用jxl生成Excel文件
PHP验证码文件类
PHP 下载远程文件
PHP获取远程文件的大小
php压缩CSS文件
PHP强制下载文件
php读取csv文件类
php 简单ftp文件上传范例
一个php 生成zip文件的类
- 相关评论
- 我要评论
-