js操作excel文件和Java操作excel文件 1C

目前一个项目需要使用到用户信息导入功能,使用的是excel表单,有没有有这方面demo的大神,最好是适配谷歌、IE、火狐三大浏览器。谢谢。itxuxiang@sina.com

5个回答

首先你要找到支持导入,导出的jar包,然后网上大把的资料进行参考,如:
String path = "F:\ZHY_WORK\hospital_20160926.xls";
List list = null;
try {
list = ExcelHelper.exportListFromExcel(new File(path), 0);
String regionName=null;//省
String cityName=null;//城市
String hospitalName=null;//医院
String departmentName=null;//科室

                String[] strs=null;
                Region r = null;
                Hospital h= null;
                Department d=null;

                int rid=0;//省ID
                int hid=0;//医院ID
                int did=0;//科室ID

                String createTime=SimplementDate.getStrformatH(new Date());

                for (String str : list) {

   }

ExcelHelper.java这个类去网上一搜,大把

首先给你推荐一个前端插件:jquery.ocupload-1.1.2.js 帮助你解决上传问题(使用方法网上搜)
当你进去后端controller时:用poi的导出形式
import org.apache.commons.fileupload.FileItem;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;

需要的jar 百度框搜索(poi导出需要jar包)
然后开始写代码:下面是我的小dome,参考基本导出方式
@CheckLogin(ResultTypeEnum.json)
@RequestMapping("power/importExpertUser")
@ResponseBody
public JsonResult importExpertUser(HttpServletRequest request,
@RequestParam(required = false) CommonsMultipartFile uploadFile)
throws Exception {
JsonResult jsonResult = new JsonResult();
Workbook excel = null;
FileItem fileItem = uploadFile.getFileItem();
InputStream inputStream = fileItem.getInputStream();
try {
// 得到excel对象
excel = WorkbookFactory.create(inputStream);
// 得到excel对象的第一张表的 sheet对象
Sheet sheet = excel.getSheetAt(0);
// 遍历每列的数据,并放到list数组中
List list = new ArrayList();
// 第一次的遍历是表头,不需要插入到数据库中
int i = 0;
for (Row row : sheet) {
if (0 == i) {
i++;
continue;// 跳出本次循环
}
// String id = row.getCell(0).getStringCellValue();
String type = row.getCell(0).getStringCellValue();
String name = row.getCell(1).getStringCellValue();
String loginName = row.getCell(2).getStringCellValue();
String loginPass = row.getCell(3).getStringCellValue();
String phone = row.getCell(4).getStringCellValue();
String remark = row.getCell(5).getStringCellValue();
ExpertUser expertUser = new ExpertUser();
expertUser.setType(type);
expertUser.setName(name);
expertUser.setLoginname(loginName);
expertUser.setPhone(phone);
expertUser.setRemark(remark);
Encrypt des = new Encrypt();// 自定义密钥
expertUser.setPassword(des.encrypt(loginPass));
list.add(expertUser);
powerService.importExpertUser(list);
jsonResult.setResult(Const.RESULT_SUCCESS);
jsonResult.setMessage("保存成功");
return jsonResult;
}
} catch (Exception e) {
e.printStackTrace();
jsonResult.setResult(Const.RESULT_ERROR);
jsonResult.setMessage("保存失败");
return jsonResult;
}
return jsonResult;
}

主要你要找到上传文件的jar,然后前端用二楼的方式去实现。

网上很多例子,以下是我在网上找的例子,你看看
package cn.com.fhz.testPOI;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JOptionPane;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

public class ExportExcelTwoSheet {

// public void exportExcel(String title, Collection<T> dataset, OutputStream
// out) {
// exportExcel(title, null, dataset, out, "yyyy-MM-dd");
// }

public void exportExcel(String title, String[] headers, Collection<T> dataset, String fileName, String type) {
    try {
        exportExcel(title, headers, dataset, fileName, "yyyy-MM-dd", type);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

// public void exportExcel(String[] headers, Collection<T> dataset,
// OutputStream out, String pattern) {
// exportExcel("测试POI导出EXCEL文档", headers, dataset, out, pattern);
// }

/**
 * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
 * 
 * @param title
 *            表格标题名
 * @param headers
 *            表格属性列名数组
 * @param dataset
 *            需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的
 *            javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据)
 * @param out
 *            与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
 * @param pattern
 *            如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
 * @throws IOException
 * @throws FileNotFoundException
 */
@SuppressWarnings("unchecked")
public void exportExcel(String title, String[] headers, Collection<T> dataset, String fileName, String pattern, String type)
        throws FileNotFoundException, IOException {


    // 声明一个工作薄
    HSSFWorkbook workbook = null;
    if (type.equals("new")) {
        workbook = new HSSFWorkbook();
    } else if (type.equals("add")) {
        InputStream myxls = new FileInputStream(fileName);
        workbook = new HSSFWorkbook(myxls);
        myxls.close();
    }
    // 生成一个表格

    HSSFSheet sheet = workbook.createSheet(title);

    // 设置表格默认列宽度为15个字节
    sheet.setDefaultColumnWidth((short) 15);
    // 生成一个样式
    HSSFCellStyle style = workbook.createCellStyle();
    // 设置这些样式
    style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    // 生成一个字体
    HSSFFont font = workbook.createFont();
    font.setColor(HSSFColor.VIOLET.index);
    font.setFontHeightInPoints((short) 12);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    // 把字体应用到当前的样式
    style.setFont(font);
    // 生成并设置另一个样式
    HSSFCellStyle style2 = workbook.createCellStyle();
    style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
    style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
    style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
    style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    // 生成另一个字体
    HSSFFont font2 = workbook.createFont();
    font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
    // 把字体应用到当前的样式
    style2.setFont(font2);

    // 声明一个画图的顶级管理器
    HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
    // 定义注释的大小和位置,详见文档
    HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
    // 设置注释内容
    comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
    // 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
    comment.setAuthor("leno");

    // 产生表格标题行
    HSSFRow row = sheet.createRow(0);
    for (short i = 0; i < headers.length; i++) {
        HSSFCell cell = row.createCell(i);
        cell.setCellStyle(style);
        HSSFRichTextString text = new HSSFRichTextString(headers[i]);
        cell.setCellValue(text);
    }

    // 遍历集合数据,产生数据行
    Iterator<T> it = dataset.iterator();
    int index = 0;
    while (it.hasNext()) {
        index++;
        row = sheet.createRow(index);
        T t = (T) it.next();
        // 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
        Field[] fields = t.getClass().getDeclaredFields();
        for (short i = 0; i < fields.length; i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellStyle(style2);
            Field field = fields[i];
            String fieldName = field.getName();
            String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
            try {
                Class tCls = t.getClass();
                Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
                Object value = getMethod.invoke(t, new Object[] {});
                // 判断值的类型后进行强制类型转换
                String textValue = null;
                if (value instanceof Boolean) {
                    boolean bValue = (Boolean) value;
                    textValue = "男";
                    if (!bValue) {
                        textValue = "女";
                    }
                } else if (value instanceof Date) {
                    Date date = (Date) value;
                    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
                    textValue = sdf.format(date);
                } else if (value instanceof byte[]) {
                    // 有图片时,设置行高为60px;
                    row.setHeightInPoints(60);
                    // 设置图片所在列宽度为80px,注意这里单位的一个换算
                    sheet.setColumnWidth(i, (short) (35.7 * 80));
                    // sheet.autoSizeColumn(i);
                    byte[] bsValue = (byte[]) value;
                    HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 6, index, (short) 6, index);
                    anchor.setAnchorType(2);
                    patriarch.createPicture(anchor, workbook.addPicture(bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG));
                } else {
                    // 其它数据类型都当作字符串简单处理
                    textValue = value.toString();
                }
                // 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成
                if (textValue != null) {
                    Pattern p = Pattern.compile("^//d+(//.//d+)?{1}");
                    Matcher matcher = p.matcher(textValue);
                    if (matcher.matches()) {
                        // 是数字当作double处理
                        cell.setCellValue(Double.parseDouble(textValue));
                    } else {
                        HSSFRichTextString richString = new HSSFRichTextString(textValue);
                        HSSFFont font3 = workbook.createFont();
                        font3.setColor(HSSFColor.BLUE.index);
                        richString.applyFont(font3);
                        cell.setCellValue(richString);
                    }
                }
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                // 清理资源
            }
        }

    }
    OutputStream out = null;

    try {
        out = new FileOutputStream(fileName);
        workbook.write(out);
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if (out != null) {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

public static void main(String[] args) {
    // 测试学生
    ExportExcelTwoSheet<Student> ex = new ExportExcelTwoSheet<Student>();
    String[] headers = { "学号", "姓名", "年龄", "性别", "出生日期" };
    List<Student> dataset = new ArrayList<Student>();
    dataset.add(new Student(10000001, "张三", 20, true, new Date()));
    dataset.add(new Student(20000002, "李四", 24, false, new Date()));
    dataset.add(new Student(30000003, "王五", 22, true, new Date()));
    // 测试图书
    ExportExcelTwoSheet<Book> ex2 = new ExportExcelTwoSheet<Book>();
    String[] headers2 = { "图书编号", "图书名称", "图书作者", "图书价格", "图书ISBN", "图书出版社" };
    List<Book> dataset2 = new ArrayList<Book>();
    //          BufferedInputStream bis = new BufferedInputStream(new FileInputStream("book.jpg"));
    //          byte[] buf = new byte[bis.available()];
    //          while ((bis.read(buf)) != -1) {
    //              //
    //          }
                dataset2.add(new Book(1, "jsp", "leno", 300.33d, "1234567", "清华出版社"));
                dataset2.add(new Book(2, "java编程思想", "brucl", 300.33d, "1234567", "阳光出版社"));
                dataset2.add(new Book(3, "DOM艺术", "lenotang", 300.33d, "1234567", "清华出版社"));
                dataset2.add(new Book(4, "c++经典", "leno", 400.33d, "1234567", "清华出版社"));
                dataset2.add(new Book(5, "c#入门", "leno", 300.33d, "1234567", "汤春秀出版社"));


                String fileName = "/Users/woni/Desktop/all.xls";
                ex.exportExcel("Student", headers, dataset, fileName, "new");
                ex2.exportExcel("Book", headers2, dataset2, fileName, "add");


                JOptionPane.showMessageDialog(null, "导出成功!");
                System.out.println("excel导出成功!");
}

}
class Book{
//"图书编号", "图书名称", "图书作者", "图书价格", "图书ISBN", "图书出版社", "封面图片"
private Integer no;
private String name;
private String author;
private Double price;
private String ISBN;
private String print;
public Book(Integer no, String name, String author, Double price, String iSBN, String print) {
super();
this.no = no;
this.name = name;
this.author = author;
this.price = price;
ISBN = iSBN;
this.print = print;
}
public Book() {
super();
// TODO Auto-generated constructor stub
}
public Integer getNo() {
return no;
}
public void setNo(Integer no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String iSBN) {
ISBN = iSBN;
}
public String getPrint() {
return print;
}
public void setPrint(String print) {
this.print = print;
}

}
class Student{
//"学号", "姓名", "年龄", "性别", "出生日期"
private Integer no;
private String name;
private Integer age;
private Boolean sex;
private Date time;

public Student() {
    super();
    // TODO Auto-generated constructor stub
}

public Student(Integer no, String name, Integer age, Boolean sex, Date time) {
    super();
    this.no = no;
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.time = time;
}

public Integer getNo() {
    return no;
}
public void setNo(Integer no) {
    this.no = no;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Integer getAge() {
    return age;
}
public void setAge(Integer age) {
    this.age = age;
}
public Boolean getSex() {
    return sex;
}
public void setSex(Boolean sex) {
    this.sex = sex;
}
public Date getTime() {
    return time;
}
public void setTime(Date time) {
    this.time = time;
}

}

首先,前台的文件上传插件,可以用jquery.fileupload.js插件进行上传,可以控制上传文件的类型及大小;
其次,就是后台controller层,如果用springMVC接收文件表单的话,直接用注解MultipartFile excelFile类型的参数接收文件表单;
最后,就是解析excel文件内容,可以用poi进行解析,就是简单的API调用了。
建议还是自己去实现,收获会更多的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
新手求助eclipse老司机,如何导出项目下所有css,sql,js,java文件名到excel。
求助eclipse老司机,现在需求导出多个项目下的所有css,java,sql,js文件名到excel中, 最好还能导出文件在项目中的路径。
Java或者JS如何实现对Excel指定范围进行截图?
1.只能使用开源代码(工具) 2.兼容Windows和Linux 3.Excel内文本具有国际化语言 注:如果是js,需要兼容多种浏览器
求助,怎样做Excel大文件上传,解析。
做一个通过jsp上传Excel文档,后台进行解析的功能,项目是struts2,一开始,我是这样写的: jsp: <div id="dlg2" class="easyui-dialog" style="width:400px;height:180px;padding:10px 20px" closed="true" buttons="#dlg-buttons2"> <form id="uploadForm" method="post" enctype="multipart/form-data"> <table style="width:320px;height:80px;"> <tr> <td>下载模版:</td> <td><a href="javascript:void(0)" class="easyui-linkbutton" onclick="downloadTemplate()">下载模板文件</a></td> </tr> <tr> <td>上传文件:</td> <td><input type="file" name="userUploadFile" id="selectedExcel"></td> </tr> </table> </form> </div> <div id="dlg-buttons2"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">导入</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a> </div> js: function uploadFile(){ debugger; var fileName = $('#selectedExcel').val(); if(fileName == ""){ $.messager.alert('提示','请选择上传文件!','info'); return; } fileext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length); fileext = fileext.toLowerCase(); if (fileext == 'xls' || fileext == 'xlsx'){ $.messager.progress({title:'提示',msg:'正在导入,请稍候...'}); $("#uploadForm").form('submit',{ type : "post", url : "<%=basePath%>" + "ImportAndExport/DataImport.action?selType=" + selType + "&fileext=" + fileext, data : "", dataType : "json", success : function(result){ $.messager.progress("close"); var data = result.split("\""); $.messager.alert('提示',data[1],'info'); }, }); } else{ $.messager.alert('提示','请选择xls/xlsx格式文件!','info'); } } 后台action接收方法: public String upload() throws Exception{ try { HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType(userUploadFile, selType, fileext); } catch (Exception e) { resultTip = "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); } return "importResult"; } service进行解析: public String importExcelByType(File f,String type,String ext){ Workbook workbook = null; int recordNum = 0;//记录插入记录数 try { if(XLS.equals(ext)){ workbook = new HSSFWorkbook(new FileInputStream(f)); } else if(XLSX.equals(ext)){ workbook = new XSSFWorkbook(new FileInputStream(f)); } Sheet sheet = workbook.getSheetAt(0); 直接用new XSSFWorkbook(new FileInputStream(f))或new HSSFWorkbook方法,获得Workbook对象。 但是,我要解析的Excel文件数据量比较大,一般都是10万条左右,获得Workbook对象的这一步直接内存溢出,拆到一万条一个文件的时候可以跑,但是十分钟很慢,于是上网找了找其他的解析Excel方法,找到了一个号称占用小速度快的,Eclipse跑了有效: [](http://blog.csdn.net/lishengbo/article/details/40711769 "") 我把这个代码拿过来用,加了个返回值List<String[]>的readExcel方法,内容就是: public static List<String[]> readExcel(String f,int columnNum) throws Exception{ // List<String[]> list=XLSXCovertCSVReader.readerExcel("d:\\a.xlsx", "sheet1", 45); List<String[]> list = XLSXCovertCSVReader .readerExcel( // "C:\\Users\\hbkn\\Desktop\\dnbb亳州导入数据\\dnbb亳州\\中压基础数据查询结果\\中压测试.xlsx", "d:\\a.xlsx", "Sheet1", 45); return list; } 然后我高高兴兴拿过来用,修改action方法如下: public String upload() throws Exception{ InputStream is=null; OutputStream os=null; String temp="d:\\a.xlsx"; try { is = new BufferedInputStream(new FileInputStream(userUploadFile)); os = new BufferedOutputStream(new FileOutputStream(temp)); byte[] buffer = new byte[1024]; int len=0; while((len=is.read(buffer))>0){ os.write(buffer,0,len); } HttpServletRequest request = ServletActionContext.getRequest(); String selType = request.getParameter("selType"); String fileext = request.getParameter("fileext"); ImportServiceImpl isi = new ImportServiceImpl(); resultTip = isi.importExcelByType1(temp, selType, fileext); }catch(Exception e){ resultTip= "导入失败!请参考:" + e.getMessage(); e.printStackTrace(); }finally{ if(is !=null){is.close();} if(os!=null){os.close();} } return "importResult"; } 修改service方法如下: public String importExcelByType1(String f,String type,String ext){ try { String[] colArr = getColumnName(type).split(","); HashMap<String, String> colMap = new HashMap<String, String>(); for(int i = 0;i < colArr.length;i++){ colMap.put(colArr[i].split(":")[0], colArr[i].split(":")[1]); } List<String[]> readExcel = XLSXCovertCSVReader.readExcel(f, colArr.length); System.out.println(readExcel.size()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return ext; } 发现报: org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'd:\a.xlsx' at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:221) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readerExcel(XLSXCovertCSVReader.java:451) at com.ssh.effectiveCheck.util.XLSXCovertCSVReader.readExcel(XLSXCovertCSVReader.java:480) at com.ssh.effectiveCheck.service.impl.ImportServiceImpl.importExcelByType1(ImportServiceImpl.java:45) at com.ssh.effectiveCheck.action.ImportAction.upload(ImportAction.java:72) 。。。。。 Caused by: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:219) at java.util.zip.ZipFile.<init>(ZipFile.java:149) at java.util.zip.ZipFile.<init>(ZipFile.java:163) at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:174) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104) ... 75 more 但是我手动修改了的解析类里的需要解析的Excel文件路径,不再让它解析我上传后的Excel,而是解析本地的原本的Excel(tomcat服务安装在本地),不报这个错了,list也成功取到了。 也就是说网上找到的这个解析方法不认我上传之后的Excel文件(明明WPS一样可以打开)。 在这个过程中,我又动了歪脑筋,这个服务是单机版,以后部署也是单机,那我能不能不上传,直接让服务解析本地的Excel呢? 所以,各位高手,我想得到解决方案(任一即可), 1。通过jsp获取一个文件的本机绝对路径(我用var fileName = $('#selectedExcel').val();试了,debug显示是fileName = "C:\fakepath\中压测试1.xlsx",这个并不是真实路径)。 2.求正确的上传Excel文件的方法,能让上面链接里代码可以成功解析的那种。 3.Workbook解析Excel大文件的正确姿势,能不能做到分段,占用内存小,速度快的那种。
怎么获取浏览器的文件下载路径
获取浏览器的文件下载路径,js或者java都可以,欢迎各位大神帮忙解决问题 1、首先问题场景是导出excel文件 2、我需要获取此文件文件的地址; 3、导出文件的方法是响应头文件的方法。直接下载到本地。
怎么把excel文件从Web端导入到数据库,Java ee平台
一份学生成绩单,从Web上导入到数据库,Java ee平台。,,,,,,,,,,,,
java vue 如何实现导出excel之前在浏览器的预览
在导出excel文件之前,在网页中预览,如何实现?需要转换为什么格式?
关于excel文件导入到mysql数据没有读取到文件问题
<p>  我最近在做一个oa项目,其中有一个excel文件导入到数据中去,用poi做的。我现在在后台能够得到文件的完整路径,但是HSSFWorkbook并没有创建一个工作簿。在网上找了很多资料,并没有找到解决方案,本人是只菜鸟,望各位大侠指路,帮忙看看。谢谢!</p> <p>前台import.jsp代码:</p> <div class="quote_title">写道</div> <div class="quote_div">&lt;%@ page contentType="text/html;charset=GBK"%&gt; <br>&lt;%@ page session="true" %&gt; <br>&lt;%@ page isThreadSafe="true" %&gt; <br>&lt;head&gt; <br><br>&lt;style type="text/css"&gt; <br>&lt;!-- <br>body,td,th { <br>font-size: 12px; <br>} <br>--&gt; <br>&lt;/style&gt; <br>&lt;title&gt;&lt;/title&gt; <br>&lt;/head&gt; <br>&lt;body &gt; <br><br>&lt;script language="javascript"&gt; <br>function add(){ <br>var filePath = document.myform.Urlexcel.value; <br>alert(filePath); <br>myform.action="saveExcel.jsp?filePath="+filePath ; <br>myform.submit(); <br>} <br><br>&lt;/script&gt; <br>&lt;form action="saveExcel.jsp" enctype="multipart/form-data" name="myform" method="post" onSubmit="return check(this)"&gt; <br><br>&lt;p&gt; &lt;/p&gt; <br>&lt;p&gt; &lt;/p&gt; <br>&lt;p&gt; &lt;/p&gt; <br>&lt;table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"&gt; <br>&lt;tr&gt; <br>&lt;td height="50" align="center" valign="middle"&gt; &lt;/td&gt; <br>&lt;td height="50" align="left" valign="middle"&gt; Excel文件: <br>&lt;input name="Urlexcel" type="file" id="Urlexcel" size="41" /&gt;&lt;/td&gt; <br>&lt;td&gt; &lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;tr&gt; <br><br>&lt;td height="50" align="center" valign="middle" colspan="2"&gt; <br>&lt;input type="button" onClick="add();" name="Submit1" value="确认提交" /&gt; <br>         <br>&lt;input type="submit" name="Submit2" value="取消重置" /&gt; <br>&lt;/td&gt; <br>&lt;td&gt; &lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br>&lt;/form&gt; <br><br>&lt;/body&gt; <br>&lt;/html&gt;</div> <p> </p> <p>后台saveExcel.jsp代码:</p> <pre name="code" class="java">&lt;%@ page language="java"%&gt; &lt;%@ page session="true"%&gt; &lt;%@ page isThreadSafe="true"%&gt; &lt;%@ page contentType="text/html;charset=GBK"%&gt; &lt;%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%&gt; &lt;%@page import="java.io.FileInputStream"%&gt; &lt;%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%&gt; &lt;%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%&gt; &lt;%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%&gt; &lt;%@page import="java.io.FileNotFoundException"%&gt; &lt;%@page import="java.io.IOException"%&gt; &lt;%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%&gt; &lt;% String filePath = request.getParameter("filePath"); out.println(filePath); try { // 创建对Excel工作簿文件的引用 FileInputStream fis = new FileInputStream(filePath); POIFSFileSystem fs = new POIFSFileSystem(fis); HSSFWorkbook wookbook = new HSSFWorkbook(fs); out.println(wookbook);//此处并没有打印出能容 HSSFSheet sheet = wookbook.getSheet("Sheet1"); // 获取到Excel文件中的所有行数 int rows = sheet.getPhysicalNumberOfRows(); out.println(rows); // 遍历行 for (int i = 0; i &lt; rows; i++) { // 读取左上端单元格? HSSFRow row = sheet.getRow(i); // 行不为空 if (row != null) { // 获取到Excel文件中的所有的列 int cells = row.getPhysicalNumberOfCells(); String value = ""; // 遍历列 for (short j = 0; j &lt; cells; j++) { // 获取到列的值 HSSFCell cell = row.getCell(j); if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: break; case HSSFCell.CELL_TYPE_NUMERIC: value += cell.getNumericCellValue() + ","; break; case HSSFCell.CELL_TYPE_STRING: value += cell.getStringCellValue() + ","; break; default: value += "0"; break; } } } // 将数据插入到mysql数据库中 String[] val = value.split(","); Nsxxb1 entity = new Nsxxb1() ; entity.setGLM(val[0]); entity.setQYMC(val[1]); entity.setXSE1(Double.parseDouble(val[2])); entity.setZZS1(Double.parseDouble(val[3])); entity.setYYS1(Double.parseDouble(val[4])); entity.setXFS1(Double.parseDouble(val[5])); entity.setQYSDS1(Double.parseDouble(val[6])); entity.setGRSDS1(Double.parseDouble(val[7])); entity.setYHS1(Double.parseDouble(val[8])); entity.setTDZZS1(Double.parseDouble(val[9])); entity.setCJS1(Double.parseDouble(val[10])); Nsxxb1Service.insert(entity); } } catch (FileNotFoundException e) { out.println("导入失败"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } %&gt; </pre> <p> </p>
JAVA中导出excel的公用类的方法怎么调用?
1.我想导出前端查询后的数据,然后将数据导出到excel中,在网上查到有一个公用的方法,我创建了,但是我不会调用。请各位大神帮助下,谢谢了。刚开始学习java的小白。 2.疑问:controller(这个不会写)怎么调用这个方法呢? 3.环境:Java后端+vue前端(前端过滤后的数据进行导出) 如下为controller,这个确实不会写,请各位大神帮助下。谢谢。 ``` @RequestMapping("/exportExcel") //@ApiOperation("数据导出excel") @ResponseBody public R download(@RequestParam Map<String, Object> params){ //exportSsExcel(String tempPath, String path, HttpServletResponse response, List<T> list, int count) //获取日期类型根据类型分发业务 String energy_name = MapUtil.getStr(map,"tempPath"); String to_build = MapUtil.getStr(map,"path"); } ``` 如下为共用类ExcelUtils中的导出方法。 ``` public void exportSsExcel(String tempPath, String path, HttpServletResponse response, List<T> list, int count) { File newFile = createNewFile(tempPath, path); InputStream is = null; HSSFWorkbook workbook = null; HSSFSheet sheet = null; try { is = new FileInputStream(newFile);// 将excel文件转为输入流 workbook = new HSSFWorkbook(is);// 创建个workbook, // 获取第一个sheet sheet = workbook.getSheetAt(0); } catch (Exception e1) { e1.printStackTrace(); } if (sheet != null) { try { // 写数据 FileOutputStream fos = new FileOutputStream(newFile); HSSFRow row = sheet.getRow(0); if (row == null) { row = sheet.createRow(0); } HSSFCell cell = row.getCell(0); if (cell == null) { cell = row.createCell(0); } //cell.setCellValue("我是标题"); for (int i = 0; i < list.size(); i++) { T vo1 = list.get(i); row = sheet.createRow(i+count); //从第count行开始 //这里就可以使用sysUserMapper,做相应的操作 Field[] fields=vo1.getClass().getDeclaredFields(); for(int j=0;j<fields.length;j++){ String firstLetter = fields[j].getName().substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + fields[j].getName().substring(1); Method method = vo1.getClass().getMethod(getter, new Class[] {}); if(fields[j].getGenericType().toString().equals("class java.util.Date")){ Object value =method.invoke(vo1, new Object[] {}); if(value!=null){ Date date =(Date)value; createRowAndCell(format.format(date), row, cell, j); }else { createRowAndCell(value, row, cell, j); } }else { createRowAndCell(method.invoke(vo1, new Object[] {}), row, cell, j); } } } workbook.write(fos); fos.flush(); fos.close(); // 下载 InputStream fis = new BufferedInputStream(new FileInputStream( newFile)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); response.reset(); response.setContentType("text/html;charset=UTF-8"); OutputStream toClient = new BufferedOutputStream( response.getOutputStream()); response.setContentType("application/x-msdownload"); String newName = URLEncoder.encode( "防火漏电" + System.currentTimeMillis() + ".xls", "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=\"" + newName + "\""); response.addHeader("Content-Length", "" + newFile.length()); toClient.write(buffer); toClient.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != is) { is.close(); } } catch (Exception e) { e.printStackTrace(); } } } // 删除创建的新文件 this.deleteFile(newFile); } ```
最近在用anjular post请求导出excel遇到的一些问题
以往做过直接导出数据,和上传excel, 用的poi3.17,前端框架用的angular 之前在导出时,都可以生成我预设的文件名,文件格式与后缀的excel 之前导出使用的是这样的 ``` window.location.href = "/api/livecoursepay?courseName=" + $scope.courseName + "&types=" + 14; ``` 赋现在的post传值代码 ``` $scope.uploadlineGuangdian=function(){ var fd = new FormData(); fd.append("file", $("#file")[0].files[0]); fd.append("types",1); $http.post("/api/improtExcel/guangdian",fd,{ withCredentials: true, headers: {'Content-Type': undefined }, responseType: 'arraybuffer', transformRequest: angular.identity }) .success(function(data){ var blob = new Blob([data], {type: "application/vnd.ms-excel"}); var objectUrl = URL.createObjectURL(blob); window.open(objectUrl); }) } ``` 但本次需求变更,需要导入一个excel文件,在返回一个excel文件, 所以只能用 post请求,但是使用过程中出现一些问题, 内容,表格名称都是我想要的样子,但是excel文件名和文件格式变成了奇怪的东西, 我需要用excel表格形式打开,再用excel另存才能达到我想要的样子 ![图片说明](https://img-ask.csdn.net/upload/201907/12/1562893703_461325.png),![图片说明](https://img-ask.csdn.net/upload/201907/12/1562893755_839418.png) 用window.location.href走的话在页面下载的就是excel文件而且文件名是我设置好的文件名 但是用上面的post方法返回的是一个没有后缀名的,文件名是一排随机编码的文件,需要用excel打开(如上图),但是打开后数据是我想要的 所以我想问问大神为什么会出现这种情况,怎么解决,非常感谢
C#+EXT 上传解析EXCEL文件
请问大家 如何用ext的上传控件 :UploadDialog 上传并解析Excel内容写入数据库? UploadDialog只能上传 难道要先上传到服务器 然后服务器再去解析么?不能用流的形式写到服务器直接解析么? 希望做过的兄弟给个例子 谢谢了 [b]问题补充:[/b] 就是说 文件上传后在服务器端解析 在操作 是吧 我开始的时候也是这么想的 只是确认一下 看看 大家还有什么其他的解决方案 [b]问题补充:[/b] 补充两个问题 请教一下高手 因为分不够 所以合并在一起了 不好意思 我的代码如下: [code="java"] function ShowUploadFileForm(FileType) { var FileFilte = []; if (FileType=='word'){ FileFilte = ['DOCX','docx','XLSX','xlsx','DOC','doc','XLS','xls','TXT','txt']; } else if (FileType=='picture'){ FileFilte = ['BMP','bmp','JPG','jpg','jpeg','JPEG','GIF','gif']; } var dialog = new Ext.ux.UploadDialog.Dialog({ autoCreate: true, closable: true, collapsible: false, draggable: true, minWidth: 400, minHeight: 200, width: 600, height: 350, permitted_extensions:FileFilte, proxyDrag: true, resizable: true, constraintoviewport: true, title: '文件上传', url: 'JSON/System/Attach.aspx?FunctionName=Sys_Attach_Add', reset_on_hide: false, allow_close_on_upload: true, file_size_limit : 5120 }); dialog.show(); } [/code] 问题1:如何设置 让dialog模态现实? 问题2:如何设置最大附件大小? 问题3:FileFilte = ['BMP','bmp','JPG','jpg','jpeg','JPEG','GIF','gif']; 这样设置 虽然bmp文件可以选择 但是上传的话 会报 “上传时发生了一个错误” 但是我看网上都是这么设置的啊。。。为什么? 谢谢了 [b]问题补充:[/b] 我用的是这个:Ext.ux.UploadDialog
java 实现jsp页面表格数据导入到Excel
java 实现jsp页面查询的表格数据导入到Excel,而不需要重新访问数据库,并把Excel存放到某一个地方。。。。例子 急。。。。
javascript ext导出excel问题
开发环境 容器:tomcat6.0 jdk:1.5 浏览器:ie6 问题描述:当ext导出excel,grid中的数据超出2000条时,excel中的只出现一个null字符串,无任何数据。
下载excel,excel是服务器动态生成,没有URL,所以不能用《a》
现在要实现下载excel功能,但excel不是存放在硬盘的,而是服务器Java生成的workbook。试<a>标签的href,但是href只能输入文件路径。 现在我需要的是:前端点击一下,然后到达服务器的 excelExport.do方法里面,方法里生成workbook,在传送excel到前端,前端弹出下载对话框,然后下载。 我已经会生成excel,只是不知道怎么传送给前端。急!
java集成水晶报表时crystalreportviewers没有excel导出按钮
小弟在做水晶报表集成javaweb时,采用网上的crystalreportviewers方法,但是显示出的报表导出界面,只有rpt,pdf,RTF,三种导出格式,没有excel,可是插件的js里面是有excel参数的,请问该如何让excel导出按钮显示出来?
ajax同时上传xlsx文件和1条字符串,参数怎么传递
单独上传xlsx没有问题,但是多加一条字符串报错:org.springframework.web.multipart.MultipartException: The current request is not a multipart request 以下是我的代码: jsp: ``` <div class="btn-file col-md-6"> <button id="btn_upload" type="button" class="btn btn-success" style="width: 100px;margin-right: 20px"> <i class="fa fa-cloud-upload" aria-hidden="true"></i> 文件上传 </button> </div> ``` js: ``` $("#btn_upload").on("click", function () { var date = $("#date").val(); var s = document.getElementById("fileUpload"); if (s !== undefined) { $("#fileUpload").remove(); } var inputObj = document.createElement('input'); inputObj.setAttribute('id', 'fileUpload'); inputObj.setAttribute('type', 'file'); inputObj.setAttribute('name', 'file'); inputObj.setAttribute('accept', '.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'); inputObj.setAttribute("style", 'visibility:hidden'); document.body.appendChild(inputObj); inputObj.click(); $("#fileUpload").on('change', function () { $("#inputText1").val(this.files[0].name); if ($("#fileUpload").val() !== "") { var formData = new FormData(); formData.append("file",this.files[0]); $.ajax({ type: "post", url: appName + '/report/upload.do', data: { data:data, file:formData }, dataType: "text", processData: false, contentType: false, success: function (result) { if (result == "success"){ layer.msg("提交成功!", {icon: 6, time: 3000}); } else { layer.msg("提交失败!", {icon: 2, time: 3000}); } }, error: function () { layer.msg("请求失败!", {icon: 2, time: 3000}); } }); layer.msg('文件上传!', {icon: 1, time: 3000}); } else { layer.msg("请先选择文件!"); } }); }); ``` controller: ``` @RequestMapping(value="/upload.do") @ResponseBody public String upload(String date, MultipartFile file) throws IOException { String path = "F:\\upload"; String fileName = file.getOriginalFilename(); File dir = new File(path,fileName); if(!dir.exists()){ dir.mkdirs(); } //MultipartFile自带的解析方法 file.transferTo(dir); System.out.println(date); System.out.println(fileName); return "fail"; } ```
关于echarts图片导出Excel,图片失真
大致实现思路是,把ecahrts图片的base64编码传到后台,再用HSSFWorkbook的HSSFPatriarch画布写出图片,但是最后导出的图片是花的,完全失真。 代码中也加上了关闭动画 animation:false。求解答 页面中的echarts图片 ![图片说明](https://img-ask.csdn.net/upload/201910/14/1571044703_625678.png) Excel中的图片 ![图片说明](https://img-ask.csdn.net/upload/201910/14/1571044813_971416.png) 发现了问题是,获取的ecahrts的base64编码有问题。 如果当前页面显示的是echarts图片,获取的编码没问题,导出也是没问题的,图片正常 但是当前页面不是echarts图片,调同一个js方法,生成base64图片,这时获取的编码就有问题了,导出的图片也失真了。 所以请教大佬们,上述两种情况,调用同一个获取base64编码的方法,得到的不同的结果, 我怎么能在页面不显示echarts图片时,获取到正确的编码呢,跪求 问题解决了,就是在其他页面(无echarts的页面)中,先把这个echarts图片画出来,再给隐藏掉。
类似excel一样拖动选择table单元格的javascript实现
嗯 嗯 我以前主要是搞java server端的编程 javascript用得少,至少用得不深 现在手上有个js任务,完成大部分,也碰到一些问题,目前要做的是,拖动选择table单元格功能,像excel里面选择表格一样,选择后单元格边框颜色变黑,能够任意拖动。 不晓得有js牛人搞过冒有,可以指点下不。 上次30分全部都送出去了,现在想起来,太浪费了,有牛人指点下的话,以后有分再可以给 :D [b]问题补充:[/b] 一楼同学,看不到源码,论坛也去了,没思路啊 [b]问题补充:[/b] 多谢而楼同学 我看了下 自己有了个思路 我已经参考例子有了简单实现,但是有个问题就是, 我的意图是只高亮显示背景颜色变蓝的单元格(见附件图片) 但是table同时会高亮其他相关的单元格,而这些单元格不是我想要的,因为我只想选中规则的矩形区域,其他单元格因为鼠标事件也被选上了。 例子中似乎已经实现了我想要的功能,但是我看了很久代码,没发现时怎么实现的 可否指点下 多谢 恩 分数可能有点少 以后又了肯定补上 多谢了 [b]问题补充:[/b] 也要多谢其他同学的建议,但是我现在不能用其他框架,如jquery之类,项目要求的 多谢大家关注 [b]问题补充:[/b] 搞定了 加了个selectstart事件处理
node转发请求,后台poi下载excel为什么一直不成功
![前台用form提交查询用的参数](https://img-ask.csdn.net/upload/201702/10/1486719189_743871.png) ![node转发到后台](https://img-ask.csdn.net/upload/201702/10/1486719212_142011.png) ![后台](https://img-ask.csdn.net/upload/201702/10/1486719224_827766.png) ![一直返回乱码,不下载](https://img-ask.csdn.net/upload/201702/10/1486719235_766177.png) ps:excel里面的数据是正确的,我用绝对路径输出,电脑里面有.xls文件。 求各位大神告诉我原因
建一个窗体,获取选择的文件路径和输入框中的ID,传输给查询程序。
![图片说明](https://img-ask.csdn.net/upload/201801/22/1516589684_320206.png) 效果如图。 点击上传按钮,能够选择本机的excl文件。获取路径。 输入框中输入数字ID 然后点击查询。(如果ID没有,或者文件路径没有,提示需要输入ID,或者需要选择文件) 点查询后,能够将ID和路径传给查询java。 查询的java已经写好了。 现在需要的是怎么建立这个窗体,来实现功能。 下面是窗体代码(需要修改的,我只是实现了界面排版): package test; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import excel.ExcelOperate; public class AbsolutePosition extends JFrame implements ActionListener { private JButton b1; private JScrollPane pane; private JTextArea area; public AbsolutePosition() { setTitle("本窗体使用绝对布局"); // 设置该窗体的标题 setLayout(null); // 使该窗体取消布局管理器设置 setBounds((Toolkit.getDefaultToolkit().getScreenSize().width -500)/2, (Toolkit.getDefaultToolkit().getScreenSize().height - 300)/2, 400, 400); // 绝对定位窗体的位置与大小 Container c = getContentPane(); // 创建容器对象 Label lb1 = new Label ("选择文件:"); b1 = new JButton("点击选择"); // 创建按钮 b1.addActionListener(this);//b1这个实例(按钮等)添加事件监听接口,this表示当前类的对象,在一个类里,你不需要new他的实例就直接可以用this调用它的方法和属性 area = new JTextArea(); pane = new JScrollPane(area); Label lb2 = new Label ("员工ID:"); JButton b2 = new JButton("查询"); // 创建按钮 JTextField jt=new JTextField();//创建输入框 lb1.setBounds(30, 30, 120, 30); // 设置文本的位置与大小 lb2.setBounds(30, 80, 120, 30); b1.setBounds(140, 30, 120, 30); // 设置按钮的位置与大小 jt.setBounds(140, 80, 100, 30);//设置文本框位置和大小 b2.setBounds(140, 150, 100, 30); c.add(b1); // 将按钮添加到容器中 this.add(pane); c.add(b2); c.add(lb1); c.add(jt); c.add(lb2); setVisible(true); // 使窗体可见 // 设置窗体关闭方式 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } // 按钮事件 public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser();// 文件选择对话框 chooser.setAcceptAllFileFilterUsed(false);// 取消所有文件过滤项 chooser.setFileFilter(new FileNameExtensionFilter("Excel文件", "xls"));// 设置只过滤扩展名为.xls的Excel文件 //String firstNum = jt.getText();//获取输入框值 int i = chooser.showOpenDialog(this);// 打开窗口 if (i == JFileChooser.APPROVE_OPTION) { this.setLocation(0, 0); this.setSize(Toolkit.getDefaultToolkit().getScreenSize()); //new ExcelOperate(area, chooser.getSelectedFile().getAbsolutePath())//调用ExcelOperate // .parseExcel(); //String B=(String)chooser.getSelectedFile().getAbsolutePath();//B为文件路径 //System.out.println(B); } } public static void main(String[] args) { new AbsolutePosition(); } } 下面是查询主代码 public static void main(String[] args) throws Exception { Car fy = new Car(); URL url = new java.net.URL("http://********");//这个是费用接口 //excel路径 String excel_file_path = "D:/cheliang.xls"; //获取excel数据 String A= new String(); String id="16215288";//员工ID List<LinkedHashMap<String,Object>> dataList = fy.getMsgInfoFromExcel(excel_file_path); for(LinkedHashMap<String,Object> dataMap : dataList){ String _cjh = dataMap.get("车架号(必填)")==null?"":dataMap.get("车架号(必填)").toString(); String _xm = dataMap.get("被保险人(必填)")==null?"":dataMap.get("被保险人(必填)").toString(); String _tel = dataMap.get("手机号")==null?"":dataMap.get("手机号").toString(); StringBuffer str = new StringBuffer(); str.append("<Request><VinNo>"); str.append(_cjh); str.append("</VinNo><CustomerName>"); str.append(_xm); str.append("</CustomerName><Mobile>"); str.append(_tel); str.append("</Mobile><IdentityCard></IdentityCard><LoginID>"); str.append(id); str.append("</LoginID></Request>"); URLConnection con = url.openConnection(); con.setUseCaches(false); con.setDoOutput(true); con.setDoInput(true); DataOutputStream dataOut = new DataOutputStream(con.getOutputStream()); String msg = str.toString(); //调用发送方法 //fy.sendMsg(msg, dataOut, con); //String carInfo=fy.sendMsg(msg, dataOut, con); String carInfo=sendMsg(msg, dataOut, con); if(carInfo.equals("车架号校验失败")) { A=A+"<Response> <VinNo>"+_cjh+"</VinNo> <CustomerName>"+_xm+"</CustomerName> <Mobile>"+carInfo+"</Mobile> <IdentityCard></IdentityCard> <ReturnMsgList> <ReturnMsg> <CarID></CarID> <CI__PolicyNo></CI__PolicyNo> <BZ__PolicyNo></BZ__PolicyNo> <LicenseNo></LicenseNo> <EngineNo></EngineNo> <FamilyType></FamilyType> <FamilyNewName></FamilyNewName> <EndDate></EndDate> <InsuredCode></InsuredCode> <ClaimCount></ClaimCount> <ClaimOldCount></ClaimOldCount> <NodamYearsBI></NodamYearsBI> <Age></Age> <ModelCode></ModelCode> <Message>"+carInfo+"</Message> </ReturnMsg> </ReturnMsgList></Response>"; }/*else if(carInfo == null || str.length() <= 0){ A=A+"<Response> <VinNo>"+_cjh+"</VinNo> <CustomerName>"+_xm+"</CustomerName> <Mobile>"+"获取为空"+"</Mobile> <IdentityCard></IdentityCard> <ReturnMsgList> <ReturnMsg> <CarID></CarID> <CI__PolicyNo></CI__PolicyNo> <BZ__PolicyNo></BZ__PolicyNo> <LicenseNo></LicenseNo> <EngineNo></EngineNo> <FamilyType></FamilyType> <FamilyNewName></FamilyNewName> <EndDate></EndDate> <InsuredCode></InsuredCode> <ClaimCount></ClaimCount> <ClaimOldCount></ClaimOldCount> <NodamYearsBI></NodamYearsBI> <Age></Age> <ModelCode></ModelCode> <Message>"+carInfo+"</Message> </ReturnMsg> </ReturnMsgList></Response>"; }*/else { A=A+carInfo; } OutExcel oed = new OutExcel(); oed.outExcel(A); dataOut.flush(); dataOut.close(); } } 主程序中的:excel_file_path和id希望能通过窗口获取过来。当然,如果用页面实现也可以。 欢迎大神私聊解决
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
有网友说:2020年还不懂Spring就放弃Java吧?
前言 Spring这个词对于开发者想必不会陌生,可能你每天都在使用Spring,享受着Spring生态提供的服务,理所当然的用着SpringIOC和SpringAOP去实现老板交给你的功能 ,唔 它就是这样使用的(类声明为Bean组件,然后注入),没错 能完成老板任务,没毛病。如果向你提问什么是Spring,Spring有什么核心功能呢,你会想:这太简单了,Spring就是框架嘛,Spring核...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
《java面试宝典》三 类初始化和类实例化顺序
前言: 社长,4年api搬运工程师,之前做的都是一些框架的搬运工作,做的时间越长,越发感觉自己技术越菜,有同感的社友,可以在下方留言。现侧重于java底层学习和算法结构学习,希望自己能改变这种现状。 为什么大厂面试,更侧重于java原理底层的提问,因为通过底层的提问,他能看出一个人的学习能力,看看这个人的可培养潜力。随着springboot的流行,大部分的开发,起步就是springboot。也...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
立即提问