use*_*973 2 java apache spring apache-poi
无法在互联网上找到一个好的帖子来帮助我.
我的要求是从电子表格中读取每一行,并使用单元格中的值生成一个sql语句,并在完成阅读电子表格时进行批量上载.
我正在使用Apache POI,Spring框架和JDBC.
我该如何从excel生成sqls?
要么
什么是最好的方法?
Oll*_*e89 12
几个星期前我会做同样的事情,结果你的问题的excel部分有以下解决方案.此解决方案支持新的和97-2007工作表格式.我正在使用spring和POI.我不认为在没有更多信息的情况下回答你的其余问题是可行的.
用户上传文件的jsp站点:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>import</title>
</head>
<body>
    <form:form modelAttribute="fileBean" method="post" enctype="multipart/form-data">
        <form:label for="fileData" path="fileData">Select file</form:label><br/><br/>
        <form:input path="fileData" type="file"/>
        <input type="submit" />
    </form:form>
</body>
</html>
将在提交时触发的控制器
@Controller
@RequestMapping("/upload")
public class ExcelImporterController {
    @RequestMapping(method = RequestMethod.POST)
    public String upload(FileBean uploadItem, BindingResult result) {
        importService.import(uploadItem);
        return "import/importDone";
    }
}
接口..
public interface importService {
    public void import(FileBean fileBean);
}
用import方法实现接口..
@Override
    public void import(FileBean fileBean) {
        ByteArrayInputStream bis = new ByteArrayInputStream(filedBean.getFileData().getBytes());
        Workbook workbook;
        try {
            if (fileBean.getFileData().getOriginalFilename().endsWith("xls")) {
                workbook = new HSSFWorkbook(bis);
            } else if (fileBean.getFileData().getOriginalFilename().endsWith("xlsx")) {
                workbook = new XSSFWorkbook(bis);
            } else {
                throw new IllegalArgumentException("Received file does not have a standard excel extension.");
            }
            for (Row row : sheet) {
               if (row.getRowNum() == 0) {
                  Iterator<Cell> cellIterator = row.cellIterator();
                  while (cellIterator.hasNext()) {
                      Cell cell = cellIterator.next();
                      //go from cell to cell and do create sql based on the content
                  }
               }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
将用于FileBean中的spring上载的bean的配置.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10000000"/>
</bean>
文件bean
public class FileBean {
  private CommonsMultipartFile fileData;
  public CommonsMultipartFile getFileData()
  {
    return fileData;
  }
  public void setFileData(CommonsMultipartFile fileData)
  {
    this.fileData = fileData;
  }
}
| 归档时间: | 
 | 
| 查看次数: | 29418 次 | 
| 最近记录: |