1. /**
  2. * 导入excel文件
  3. * 2014-7-23
  4. * @return
  5. */
  6. @RequiresPermissions("plug:product:caiwu:upload")
  7. @RequestMapping("upload.do")
  8. public String upload(
  9. @RequestParam(value = "filePath", required = false) MultipartFile file,
  10. HttpServletRequest request, HttpServletResponse response,
  11. RedirectAttributes ra)throws IllegalStateException, IOException {
  12. Map<String, String> errorMap = new HashMap<String, String>();
  13. Integer siteId = Context.getCurrentSiteId(request);
  14. String parentId = Servlets.getParameter(request, "parentId");
  15. Site site = Context.getCurrentSite(request);
  16. String base = site.getFilesBasePath("");
  17. if (StringUtils.isBlank(parentId)) {
  18. parentId = base;
  19. }
  20. ServletContext sc = request.getServletContext();
  21. String savePath = Constants.SAVE_PATH;
  22. // 上传文件的保存路径
  23. ra.addFlashAttribute(MESSAGE, Constants.UPLOAD_SUCCESS);
  24. String excelPath = sc.getRealPath("/") + savePath + "\\";// 上传成功读取文件
  25. File dest = new File(excelPath, file.getOriginalFilename());
  26. try {
  27. file.transferTo(dest);
  28. // 导入表格数据
  29. String[][] execlResult = ExcelOperate.getData(dest, 1);// 1表示忽略的行数
  30. errorMap = service.batchInsertExcelData(execlResult, siteId);// 批量更新excel表格数据到数据库中
  31. request.getSession().setAttribute("errorMap", errorMap);
  32. return "plug/product/product_upload_excel";
  33. } catch (Exception e) {
  34. errorMap.put("error", "文件不存在,或者上傳格式不正確!");
  35. request.getSession().setAttribute("errorMap", errorMap);
  36. return "plug/product/product_upload_excel";
  37. }
  38.  
  39. }
  40.  
  41. /****
  42. * 导出成Excel表格数
  43. * @param request
  44. * @return
  45. * @throws UnsupportedEncodingException
  46. */
  47. @RequiresPermissions("plug:product:caiwu:downloadexcel")
  48. @RequestMapping("downloadexcel.do")
  49. public String downLoadExcel(HttpServletRequest request,HttpServletResponse response) throws Exception{
  50. response.setContentType("text/html;charset=utf-8");
  51. request.setCharacterEncoding("UTF-8");
  52. java.io.BufferedInputStream bis = null;
  53. java.io.BufferedOutputStream bos = null;
  54. List<ProductEntity> productList = new ArrayList<ProductEntity>();
  55. ProductEntity product = new ProductEntity();
  56. Site site = Context.getCurrentSite(request);
  57. product.setSite(site);
  58. productList = service.getAllProductList(product);
  59. ExcelOperate operate = new ExcelOperate();
  60. ServletContext sc = request.getServletContext();
  61. String downloadPath = Constants.DOWNLOAD_PATH;
  62. // 上传文件的保存路径
  63. String excelPath = sc.getRealPath("/") + downloadPath + "\\";// 上传成功读取文件
  64. operate.downLoadExcelData(productList,excelPath);//生成excel
  65. String downLoadPath = excelPath + Constants.DOWNLOAD_EXCEL_NAME;
  66. // System.out.println(downLoadPath);
  67. try {
  68. long fileLength = new File(downLoadPath).length();
  69. response.setContentType("application/x-msdownload;");
  70. response.setHeader("Content-disposition", "attachment; filename="
  71. + new String(Constants.DOWNLOAD_EXCEL_NAME.getBytes("utf-8"), "ISO8859-1"));
  72. response.setHeader("Content-Length", String.valueOf(fileLength));
  73. bis = new BufferedInputStream(new FileInputStream(downLoadPath));
  74. bos = new BufferedOutputStream(response.getOutputStream());
  75. byte[] buff = new byte[2048];
  76. int bytesRead;
  77. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  78. bos.write(buff, 0, bytesRead);
  79. }
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. } finally {
  83. if (bis != null)
  84. bis.close();
  85. if (bos != null)
  86. bos.close();
  87. }
  88.  
  89. //return "redirect:list.do";
  90. return null;
  91. }

EXCEL操作类。ExcelOperate.java

  1. package com.paiergao.common;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.text.DecimalFormat;
  9. import java.text.ParseException;
  10. import java.text.SimpleDateFormat;
  11. import java.util.ArrayList;
  12. import java.util.Arrays;
  13. import java.util.Date;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17.  
  18. import org.apache.poi.hssf.usermodel.DVConstraint;
  19. import org.apache.poi.hssf.usermodel.HSSFCell;
  20. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  21. import org.apache.poi.hssf.usermodel.HSSFDataValidation;
  22. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  23. import org.apache.poi.hssf.usermodel.HSSFRow;
  24. import org.apache.poi.hssf.usermodel.HSSFSheet;
  25. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  26. import org.apache.poi.hssf.util.CellRangeAddressList;
  27. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  28. import org.springframework.stereotype.Controller;
  29.  
  30. import com.jspxcms.core.domain.Site;
  31. import com.jspxcms.core.support.Constants;
  32. import com.jspxcms.plug.domain.ProductEntity;
  33. import com.jspxcms.plug.repository.ProductDao;
  34.  
  35. /****
  36. * 读取excel操作类
  37. * 导入excel类
  38. * @author Administrator
  39. *
  40. */
  41. @Controller
  42. public class ExcelOperate {
  43. private SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
  44. private SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
  45. private SimpleDateFormat sf3 = new SimpleDateFormat("dd/MM/yyyy");
  46. //当前状态
  47. private String [] currentStatuses={"已申号","新收到未修","待件","烧机","已修好待发","客户拒修待发","等待报价","已报价待确认","同意报价要求先修","先修未付费","作废","已发"};
  48. //维修状态
  49. private String [] warrantyStatuses={"保内维修","保内更换", "保内无故障","保外维修","保外拒修","保外无故障"};
  50. //批量插入数据到qudao_excel表中2014-6-6
  51. public Map<String,String> insertDataExcel(String[][] result,ProductDao dao,Integer siteId){
  52.  
  53. Map<String,String> errorMap = new HashMap<String, String>();
  54. Site site = new Site();
  55. site.setId(siteId);//站点id
  56. int rowLength = result.length;//行数
  57. // List<QuDaoEntity> dataList = new ArrayList<QuDaoEntity>();
  58. long time1 = System.currentTimeMillis();
  59. for(int i=0;i<rowLength;i++) {
  60. ProductEntity product = new ProductEntity();
  61. product.setSite(site);//设置站点
  62. boolean bool = true;
  63. for(int j=0;j<result[i].length;j++) {
  64. System.out.print(result[i][j]+"\t\t");
  65. if(result[i][0]!=null){
  66. product.setRmaNumber(result[i][0]);
  67. ProductEntity bean = dao.findExist(product);//判断rmaNumber不重复
  68. if(bean!=null){
  69. //有重复数据返回
  70. errorMap.put(product.getRmaNumber(), "RMANumber已存在!");
  71. bool= false;
  72. }else{
  73. bool = true;
  74. }
  75. }
  76.  
  77. if((result[i][1])!=null){
  78. product.setPartner(result[i][1]);
  79. }
  80. if((result[i][2])!=null){
  81. product.setModel(result[i][2]);
  82. }
  83. if((result[i][3])!=null){
  84. product.setSerialNumber(result[i][3]);
  85. }
  86. if(null!=(result[i][4])){
  87. product.setErrorInfo(result[i][4]);
  88. }
  89. if(null!=(result[i][5])&&""!=result[i][5]){
  90. try {
  91. product.setWarrantyDate(sf3.parse(result[i][5]));
  92. } catch (ParseException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. if(null!=(result[i][6])){
  97. product.setClaim(result[i][6].substring(0, result[i][6].length()-3));//去除后面的.00小数
  98. }
  99. if(null!=(result[i][7])&&""!=result[i][7]){
  100. try {
  101. product.setRecvDate(sf2.parse(result[i][7]));
  102. } catch (ParseException e) {
  103. e.printStackTrace();
  104. }
  105. }
  106. if(null!=(result[i][8])&&""!=result[i][8]){
  107. try {
  108. product.setDeliverDate(sf2.parse(result[i][8]));
  109. } catch (ParseException e) {
  110. e.printStackTrace();
  111. }
  112. }
  113. if(result[i][9]!=null&&""!=result[i][9]){
  114. try {
  115. product.setPartnerConfirmDate(sf2.parse(result[i][9]));
  116. } catch (ParseException e) {
  117. e.printStackTrace();
  118. }
  119. }
  120. if(result[i][10]!=null&&""!=result[i][10]){
  121. try {
  122. product.setBackDate(sf2.parse(result[i][10]));
  123. } catch (ParseException e) {
  124. e.printStackTrace();
  125. }
  126. }
  127. if(result[i][11]!=null){
  128. product.setTrackNumber(result[i][11]);
  129. }
  130. if(result[i][12]!=null){
  131. product.setYunFee(Double.parseDouble(result[i][12]));
  132. }
  133. if(result[i][13]!=null){
  134. product.setCR(result[i][13]);
  135. }
  136. if(result[i][14]!=null){
  137. product.setFindErrorInfo(result[i][14]);
  138. }
  139. if(result[i][15]!=null){
  140. product.setHowFix(result[i][15]);
  141. }
  142. if(result[i][16]!=null){
  143. product.setRepalceParts(result[i][16]);
  144. }
  145. if(result[i][17]!=null){
  146. product.setEngineer(result[i][17]);
  147. }
  148. if(result[i][18]!=null){
  149. /**取出当前状态,判断,存储**/
  150. if(result[i][18].equals(Constants.C1)){
  151. product.setCurrentStatus(1);
  152. }
  153. if(result[i][18].equals(Constants.C2)){
  154. product.setCurrentStatus(2);
  155. }
  156. if(result[i][18].equals(Constants.C3)){
  157. product.setCurrentStatus(3);
  158. }
  159. if(result[i][18].equals(Constants.C4)){
  160. product.setCurrentStatus(4);
  161. }
  162. if(result[i][18].equals(Constants.C5)){
  163. product.setCurrentStatus(5);
  164. }
  165. if(result[i][18].equals(Constants.C6)){
  166. product.setCurrentStatus(6);
  167. }
  168. if(result[i][18].equals(Constants.C7)){
  169. product.setCurrentStatus(7);
  170. }
  171. if(result[i][18].equals(Constants.C8)){
  172. product.setCurrentStatus(8);
  173. }
  174. if(result[i][18].equals(Constants.C9)){
  175. product.setCurrentStatus(9);
  176. }
  177. if(result[i][18].equals(Constants.C10)){
  178. product.setCurrentStatus(10);
  179. }
  180. if(result[i][18].equals(Constants.C11)){
  181. product.setCurrentStatus(11);
  182. }
  183. if(result[i][18].equals(Constants.C12)){
  184. product.setCurrentStatus(12);
  185. }
  186. }
  187. if(result[i][19]!=null){
  188. if(result[i][19].equals(Constants.W1)){
  189. product.setWarrantyStatus(1);
  190. }
  191. if(result[i][19].equals(Constants.W2)){
  192. product.setWarrantyStatus(2);
  193. }
  194. if(result[i][19].equals(Constants.W3)){
  195. product.setWarrantyStatus(3);
  196. }
  197. if(result[i][19].equals(Constants.W4)){
  198. product.setWarrantyStatus(4);
  199. }
  200. if(result[i][19].equals(Constants.W5)){
  201. product.setWarrantyStatus(5);
  202. }
  203. if(result[i][19].equals(Constants.W6)){
  204. product.setWarrantyStatus(6);
  205. }
  206. }
  207. if(result[i][20]!=null&&""!=result[i][20]){
  208. product.setFixFee(Double.parseDouble(result[i][20]));
  209. }
  210. if(result[i][21]!=null){
  211. product.setNoteInfo(result[i][21]);
  212. }
  213. }
  214. //dataList.add(q);
  215. System.out.println();
  216. //ball.setId(i+1);
  217.  
  218. if(bool){
  219. errorMap.put(product.getRmaNumber(),"导入成功!");
  220. dao.save(product);
  221. }else{
  222. continue;
  223. }
  224. }
  225. // dao.batchInsertData(dataList);//批量插入数据2014-6-6
  226. return errorMap;
  227. }
  228. /**判断是否是数字**/
  229. public static boolean isNumeric(String str){
  230. final String number = "0123456789.";
  231. for(int i = 0;i<str.length();i++){
  232. if(number.indexOf(str.charAt(i)) == -1){
  233. return false;
  234. }
  235. }
  236. return true;
  237. }
  238.  
  239. /**
  240.  
  241. * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行
  242.  
  243. * @param file 读取数据的源Excel
  244.  
  245. * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1
  246.  
  247. * @return 读出的Excel中数据的内容
  248.  
  249. * @throws FileNotFoundException
  250.  
  251. * @throws IOException
  252.  
  253. */
  254.  
  255. public static String[][] getData(File file, int ignoreRows)
  256.  
  257. throws FileNotFoundException, IOException {
  258.  
  259. List<String[]> ballResult = new ArrayList<String[]>();//双色球数据
  260.  
  261. int rowSize = 0;
  262.  
  263. BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
  264.  
  265. // 打开HSSFWorkbook
  266.  
  267. POIFSFileSystem fs = new POIFSFileSystem(in);
  268.  
  269. HSSFWorkbook wb = new HSSFWorkbook(fs);
  270.  
  271. HSSFCell cell = null;
  272.  
  273. for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
  274.  
  275. HSSFSheet st = wb.getSheetAt(sheetIndex);
  276.  
  277. // 第一行为标题,不取
  278.  
  279. for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
  280.  
  281. HSSFRow row = st.getRow(rowIndex);
  282.  
  283. if (row == null) {
  284.  
  285. continue;
  286.  
  287. }
  288.  
  289. int tempRowSize = row.getLastCellNum() + 1;
  290.  
  291. if (tempRowSize > rowSize) {
  292.  
  293. rowSize = tempRowSize;
  294.  
  295. }
  296.  
  297. String[] values = new String[rowSize];
  298.  
  299. Arrays.fill(values, "");
  300.  
  301. boolean hasValue = false;
  302.  
  303. for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
  304.  
  305. String value = "";
  306.  
  307. cell = row.getCell(columnIndex);
  308.  
  309. if (cell != null) {
  310.  
  311. // 注意:一定要设成这个,否则可能会出现乱码
  312.  
  313. //cell.setEncoding(HSSFCell.ENCODING_UTF_16);
  314.  
  315. switch (cell.getCellType()) {
  316.  
  317. case HSSFCell.CELL_TYPE_STRING:
  318.  
  319. value = cell.getStringCellValue();
  320.  
  321. break;
  322.  
  323. case HSSFCell.CELL_TYPE_NUMERIC:
  324.  
  325. if (HSSFDateUtil.isCellDateFormatted(cell)) {
  326.  
  327. Date date = cell.getDateCellValue();
  328.  
  329. if (date != null) {
  330.  
  331. value = new SimpleDateFormat("yyyy-MM-dd")
  332.  
  333. .format(date);
  334.  
  335. } else {
  336.  
  337. value = "";
  338.  
  339. }
  340.  
  341. }
  342. else {
  343. DecimalFormat df = new DecimalFormat("#.00"); //保留两位小数
  344.  
  345. String whatYourWant = df.format(cell.getNumericCellValue());
  346. //System.out.println(whatYourWant);
  347. value = whatYourWant;
  348. /* value = new DecimalFormat("0").format(cell
  349. .getNumericCellValue());*/
  350. // value = String.valueOf(cell.getNumericCellValue());
  351. // System.out.println("value:"+cell.getNumericCellValue());
  352.  
  353. }
  354.  
  355. break;
  356.  
  357. case HSSFCell.CELL_TYPE_FORMULA:
  358.  
  359. // 导入时如果为公式生成的数据则无值
  360.  
  361. if (!cell.getStringCellValue().equals("")) {
  362.  
  363. value = cell.getStringCellValue();
  364.  
  365. } else {
  366.  
  367. value = cell.getNumericCellValue() + "";
  368.  
  369. }
  370.  
  371. break;
  372.  
  373. case HSSFCell.CELL_TYPE_BLANK:
  374.  
  375. break;
  376.  
  377. case HSSFCell.CELL_TYPE_ERROR:
  378.  
  379. value = "";
  380.  
  381. break;
  382.  
  383. case HSSFCell.CELL_TYPE_BOOLEAN:
  384.  
  385. value = (cell.getBooleanCellValue() == true ? "Y"
  386.  
  387. : "N");
  388.  
  389. break;
  390.  
  391. default:
  392.  
  393. value = "";
  394.  
  395. }
  396.  
  397. }
  398.  
  399. if (columnIndex == 0 && value.trim().equals("")) {
  400.  
  401. break;
  402.  
  403. }
  404.  
  405. values[columnIndex] = rightTrim(value);
  406.  
  407. hasValue = true;
  408.  
  409. }
  410.  
  411. if (hasValue) {
  412. if(sheetIndex==0){
  413. //百度杀毒sheet表数据
  414. ballResult.add(values);
  415. }
  416.  
  417. }
  418.  
  419. }
  420. }
  421.  
  422. in.close();
  423.  
  424. String[][] ballReturnArray = new String[ballResult.size()][rowSize];
  425.  
  426. for (int i = 0; i < ballReturnArray.length; i++) {
  427. ballReturnArray[i] = (String[]) ballResult.get(i);
  428.  
  429. }
  430.  
  431. //返回百度杀毒数据
  432. return ballReturnArray;
  433.  
  434. }
  435.  
  436. /**
  437.  
  438. * 去掉字符串右边的空格
  439.  
  440. * @param str 要处理的字符串
  441.  
  442. * @return 处理后的字符串
  443.  
  444. */
  445.  
  446. public static String rightTrim(String str) {
  447.  
  448. if (str == null) {
  449.  
  450. return "";
  451.  
  452. }
  453.  
  454. int length = str.length();
  455.  
  456. for (int i = length - 1; i >= 0; i--) {
  457.  
  458. if (str.charAt(i) != 0x20) {
  459.  
  460. break;
  461.  
  462. }
  463.  
  464. length--;
  465.  
  466. }
  467.  
  468. return str.substring(0, length);
  469.  
  470. }
  471. public static void main(String[] args) {
  472. ExcelOperate op = new ExcelOperate();
  473. File file = new File("d:\\test.xls");
  474. try {
  475. String a[][] = op.getData(file, 1);
  476. for (String[] strings : a) {
  477. for (String string : strings) {
  478. System.out.print(string);
  479. }
  480. System.out.println();
  481. }
  482. } catch (FileNotFoundException e) {
  483. e.printStackTrace();
  484. } catch (IOException e) {
  485. e.printStackTrace();
  486. }
  487. }
  488. /**导出excel**/
  489. public void downLoadExcelData(List<ProductEntity> productList,String downloadPath) {
  490.  
  491. // 第一步,创建一个webbook,对应一个Excel文件
  492. HSSFWorkbook wb = new HSSFWorkbook();
  493. // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
  494. HSSFSheet sheet = wb.createSheet("派尔高维修中心维修设备表");
  495. // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
  496. HSSFRow row = sheet.createRow((int) 0);
  497. // 第四步,创建单元格,并设置值表头 设置表头居中
  498. HSSFCellStyle style = wb.createCellStyle();
  499. style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
  500.  
  501. HSSFCell cell = row.createCell((short) 0);
  502. cell.setCellValue("维修编号");
  503. cell.setCellStyle(style);
  504. cell = row.createCell(1);
  505. cell.setCellValue("客户编号");
  506. cell.setCellStyle(style);
  507. cell = row.createCell(2);
  508. cell.setCellValue("设备型号");
  509. cell.setCellStyle(style);
  510. cell = row.createCell(3);
  511. cell.setCellValue("系列号");
  512. cell.setCellStyle(style);
  513. cell = row.createCell(4);
  514. cell.setCellValue("客户反馈故障");
  515. cell.setCellStyle(style);
  516. cell = row.createCell(5);
  517. cell.setCellValue("保修期至");
  518. cell.setCellStyle(style);
  519. cell = row.createCell(6);
  520. cell.setCellValue("Claim ");
  521. cell.setCellStyle(style);
  522. cell = row.createCell(7);
  523. cell.setCellValue("收到日期");
  524. cell.setCellStyle(style);
  525. cell = row.createCell(8);
  526. cell.setCellValue("报价日期");
  527. cell.setCellStyle(style);
  528. cell = row.createCell(9);
  529. cell.setCellValue("客户确认日期");
  530. cell.setCellStyle(style);
  531. cell = row.createCell(10);
  532. cell.setCellValue("发回日期");
  533. cell.setCellStyle(style);
  534. cell = row.createCell(11);
  535. cell.setCellValue("运单号跟踪");
  536. cell.setCellStyle(style);
  537. cell = row.createCell(12);
  538. cell.setCellValue("运费");
  539. cell.setCellStyle(style);
  540. cell = row.createCell(13);
  541. cell.setCellValue("C/R");
  542. cell.setCellStyle(style);
  543. cell = row.createCell(14);
  544. cell.setCellValue("工程师发现故障");
  545. cell.setCellStyle(style);
  546. cell = row.createCell(15);
  547. cell.setCellValue("如何维修");
  548. cell.setCellStyle(style);
  549. cell = row.createCell(16);
  550. cell.setCellValue("更换配件");
  551. cell.setCellStyle(style);
  552. cell = row.createCell(17);
  553. cell.setCellValue("工程师");
  554. cell.setCellStyle(style);
  555. cell = row.createCell(18);
  556. cell.setCellValue("当前状态");
  557. cell.setCellStyle(style);
  558. cell = row.createCell(19);
  559. cell.setCellValue("保修状态");
  560. cell.setCellStyle(style);
  561. cell = row.createCell(20);
  562. cell.setCellValue("维修费用");
  563. cell.setCellStyle(style);
  564. cell = row.createCell(21);
  565. cell.setCellValue("客户联系信息");
  566. cell.setCellStyle(style);
  567.  
  568. // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
  569.  
  570. for (int i = 0; i < productList.size(); i++)
  571. {
  572. row = sheet.createRow((int) i + 1);
  573. ProductEntity product = (ProductEntity) productList.get(i);
  574. // 第四步,创建单元格,并设置值
  575. if(product.getRmaNumber()!=null){
  576. row.createCell(0).setCellValue(product.getRmaNumber());
  577. }
  578. if(product.getPartner()!=null){
  579. row.createCell(1).setCellValue(product.getPartner());
  580. }
  581. if(product.getModel()!=null){
  582. row.createCell(2).setCellValue(product.getModel());
  583. }
  584. if(product.getSerialNumber()!=null){
  585. row.createCell(3).setCellValue(product.getSerialNumber());
  586. }
  587. if(product.getErrorInfo()!=null){
  588. row.createCell(4).setCellValue(product.getErrorInfo());
  589. }
  590. if(product.getWarrantyDate()!=null){
  591. row.createCell(5).setCellValue(sf3.format(product.getWarrantyDate()));
  592. }
  593. if(product.getClaim()!=null){
  594. row.createCell(6).setCellValue(product.getClaim());
  595. }
  596. if(product.getRecvDate()!=null){
  597. row.createCell(7).setCellValue(sf2.format(product.getRecvDate()));
  598. }
  599. if(product.getDeliverDate()!=null){
  600. row.createCell(8).setCellValue(sf2.format(product.getDeliverDate()));
  601. }
  602. if(product.getPartnerConfirmDate()!=null){
  603. row.createCell(9).setCellValue(sf2.format(product.getPartnerConfirmDate()));
  604. }
  605. if(product.getBackDate()!=null){
  606. row.createCell(10).setCellValue(sf2.format(product.getBackDate()));
  607. }
  608. if(product.getTrackNumber()!=null){
  609. row.createCell(11).setCellValue(product.getTrackNumber());
  610. }
  611. if(product.getYunFee()!=null){
  612. row.createCell(12).setCellValue(product.getYunFee());
  613. }
  614. if(product.getCR()!=null){
  615. row.createCell(13).setCellValue(product.getCR());
  616. }
  617. if(product.getFindErrorInfo()!=null){
  618. row.createCell(14).setCellValue(product.getFindErrorInfo());
  619. }
  620. if(product.getHowFix()!=null){
  621. row.createCell(15).setCellValue(product.getHowFix());
  622. }
  623. if(product.getRepalceParts()!=null){
  624. row.createCell(16).setCellValue(product.getRepalceParts());
  625. }
  626. if(product.getEngineer()!=null){
  627. row.createCell(17).setCellValue(product.getEngineer());
  628. }
  629. if(product.getCurrentStatus()!=null){
  630. CellRangeAddressList regions = new CellRangeAddressList(i+1,i+1,18,18);
  631. //生成下拉框内容
  632. DVConstraint constraint = DVConstraint.createExplicitListConstraint(currentStatuses);
  633. //绑定下拉框和作用区域
  634. HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint);
  635. //对sheet页生效
  636. sheet.addValidationData(data_validation);
  637. switch (product.getCurrentStatus()) {
  638. case 0:
  639. row.createCell(18).setCellValue(Constants.C0);
  640. break;
  641. case 1:
  642. row.createCell(18).setCellValue(Constants.C1);
  643. break;
  644. case 2:
  645. row.createCell(18).setCellValue(Constants.C2);
  646. break;
  647. case 3:
  648. row.createCell(18).setCellValue(Constants.C3);
  649. break;
  650. case 4:
  651. row.createCell(18).setCellValue(Constants.C4);
  652. break;
  653. case 5:
  654. row.createCell(18).setCellValue(Constants.C5);
  655. break;
  656. case 6:
  657. row.createCell(18).setCellValue(Constants.C6);
  658. break;
  659. case 7:
  660. row.createCell(18).setCellValue(Constants.C7);
  661. break;
  662. case 8:
  663. row.createCell(18).setCellValue(Constants.C8);
  664. break;
  665. case 9:
  666. row.createCell(18).setCellValue(Constants.C9);
  667. break;
  668. case 10:
  669. row.createCell(18).setCellValue(Constants.C10);
  670. break;
  671. case 11:
  672. row.createCell(18).setCellValue(Constants.C11);
  673. break;
  674. case 12:
  675. row.createCell(18).setCellValue(Constants.C12);
  676. break;
  677. default:
  678. break;
  679. }
  680.  
  681. }
  682. if(product.getWarrantyStatus()!=null){
  683. CellRangeAddressList regions = new CellRangeAddressList(i+1,i+1,19,19);
  684. //生成下拉框内容
  685. DVConstraint constraint = DVConstraint.createExplicitListConstraint(warrantyStatuses);
  686. //绑定下拉框和作用区域
  687. HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint);
  688. //对sheet页生效
  689. sheet.addValidationData(data_validation);
  690. switch (product.getWarrantyStatus()) {
  691. case 0:
  692. row.createCell(19).setCellValue(Constants.W0);
  693. break;
  694. case 1:
  695. row.createCell(19).setCellValue(Constants.W1);
  696. break;
  697. case 2:
  698. row.createCell(19).setCellValue(Constants.W2);
  699. break;
  700. case 3:
  701. row.createCell(19).setCellValue(Constants.W3);
  702. break;
  703. case 4:
  704. row.createCell(19).setCellValue(Constants.W4);
  705. break;
  706. case 5:
  707. row.createCell(19).setCellValue(Constants.W5);
  708. break;
  709. case 6:
  710. row.createCell(19).setCellValue(Constants.W6);
  711. break;
  712. default:
  713. break;
  714. }
  715. }
  716. if(product.getFixFee()!=null){
  717. row.createCell(20).setCellValue(product.getFixFee());
  718. }
  719. if(product.getNoteInfo()!=null){
  720. row.createCell(21).setCellValue(product.getNoteInfo());
  721. }
  722.  
  723. }
  724. // 第六步,将文件存到指定位置
  725. try
  726. {
  727. FileOutputStream fout = new FileOutputStream(downloadPath+Constants.DOWNLOAD_EXCEL_NAME); //导出成excel的文件名称和路径
  728. wb.write(fout);
  729. fout.close();
  730. }
  731. catch (Exception e)
  732. {
  733. e.printStackTrace();
  734. }
  735. }
  736.  
  737. }

java导入导出下载Excel,xls文件(带下拉框)的更多相关文章

  1. java操作poi生成excel.xlsx(设置下拉框)下载本地和前端下载

    需求:导入excel表格,如果excel有错误,将错误的地方标红,在把数据以excel的形式写出,供用户下载解决方案:1.以实体类的方式接收excel并解析(创建两个集合一个接收正常的数据一个接收错误 ...

  2. excel 如何制作带下拉框的动态折线图表

    首先我们需要有个类似下图产品销量的基础数据表. 首先将光标放入表格中任意位置,然后插入一个不带点标记的折线图,然后将折线的颜色设置为灰色. 第一次设置成灰色后,一定善用f4快捷键进行快速的折线颜色设置 ...

  3. poi excel导出 xssf 带下拉框

    需求:导出之后带有二级级联的下拉框.(类似于省市). 最初的思路是怀疑是不是数组内串太多了,导出之后的excel有36行,调试的误区在于刚开始认为对行数有限制,后自己写了一个测试类,才发现不是行数,而 ...

  4. java动态生成带下拉框的Excel导入模板

    在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...

  5. Android 导入导出CSV,xls文件 .

    1 . http://www.bangchui.org/read.php?tid=62 2 .http://blog.csdn.net/xinzheng_wang/article/details/77 ...

  6. Excel制作多选下拉框代码以及图示

    1.首先  点击Sheet1(需要显示多选框的页) ,然后右键查看代码,进入编辑界面 2.写入如下代码 Private Sub Worksheet_SelectionChange(ByVal Targ ...

  7. EasyExcel导出创建Excel下拉框

    话不多说,上才艺. 下面代码粘贴即用 /** * * 导出表格带下拉框 */ @GetMapping("exportBox") public void export(HttpSer ...

  8. JAVA实现数据库数据导入/导出到Excel(POI)

    准备工作: 1.导入POI包:POI下载地址http://mirrors.tuna.tsinghua.edu.cn/apache/poi/release/src/(重要) 如下 2.导入Java界面美 ...

  9. vue Excel导入,下载Excel模板,导出Excel

    vue  Excel导入,下载Excel模板,导出Excel vue  Excel导入,下载Excel模板 <template> <div style="display: ...

随机推荐

  1. Vue使用Elementui修改默认最快方法!

    相信大家都需要过,在Vue中使用Elementui的时候,遇到最多也最蛋疼的问题就是修改默认样式,接下来直奔主题: // template <el-progress :text-inside=& ...

  2. 新技能get,文件夹隐藏

    attrib命令用来显示或更改文件属性. ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S ...

  3. 多线程编程-- part 4 线程间的通信

    线程间的相互作用 线程之间需要一些协调通信,来共同完成一件任务. Object类相关的方法:notify(),notifyAll(),wait().会被所有的类继承,这些方法是final不能被重写.他 ...

  4. CentOS 7系统时间与实际时间差8个小时

    1.查看系统时间: [root@localhost sysconfig]# timedatectl Local time: 一 2017-11-06 21:13:19 CST Universal ti ...

  5. python-迭代器与生成器1

    python-迭代器与生成器1 迭代器与生成器列表的定义列表生成式:作用使代码更加简洁通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元 ...

  6. 牛客练习赛47 DongDong数颜色 (莫队算法)

    链接:https://ac.nowcoder.com/acm/contest/904/E 来源:牛客网 DongDong数颜色 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 5242 ...

  7. スワコゥのパーフェクトコード教室 ~ Style of suwakow's for OI Codes

    "みんなー! スワコゥのコード教室はじまるよー!" "大家!\(\color{grey}{\text{suwakow}}\)的码风教室开始了哟!" " ...

  8. sys.argv的意义及用法

    sys.argv的意义 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个) 下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行 新建一个t ...

  9. 绑定与非绑定以及property装饰器_day_21 作业题

    1.定义MySQL类 1.对象有id.host.port三个属性 2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一 3.提供两种实例化方式,方式一:用户传入host和po ...

  10. 数据库之MySQL-基本知识(与Oracle简单对比)

    一.什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件 ...