当前位置: 首页 > 知识库问答 >
问题:

如何创建接受excel文件的RestAPI?[关闭]

柯昆
2023-03-14

我对Springboot很陌生。我需要创建一个接受Excel文件的rest API。我需要使用excel文件中的数据来执行操作。我知道如何用@RequestParam和@RequestBody创建API,但不知道如何为excel文件创建API。我没有将文件存储在数据库中,所以不需要模型。我在网上搜索,但看到所有的资源谈论通过客户端上传文件。我想对我的API中收到的文件进行操作。

共有1个答案

端木兴国
2023-03-14

基于您的注释,您表示希望从工作簿中读取一些值并使用它。

为此,Apache POI可以成为一个很棒的库。

Apache POI XSSF组件可用于读取.xlsx,而HSSF组件可用于读取.xls(在MS Office 2007版本之前)

您可以在multipart/form-data请求中接收文件,让Spring将其反序列化为multipartfile对象,然后使用Apache POI读取文件的inputstream,创建工作簿并使用它。

将Apache POI XSSF Maven依赖项添加到项目中:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0.0</version>
</dependency>

控制器中的示例:

@RestController
@RequestMapping(path = "/my-controller")
public class MyController {

    private final Logger log = LoggerFactory.getLogger(MyController.class);

    @PostMapping(consumes = { MediaType.MULTIPART_FORM_DATA_VALUE })
    public ResponseEntity<Object> handlePost(@RequestParam(name = "file") MultipartFile file) {
        // validate that the file has the .xlsx extension (which doesn't mean much, actually..)
        String fileName = file.getOriginalFilename();
        if (fileName.substring(fileName.length() - 5, fileName.length()).equals(".xlsx")) {
            try (InputStream excelIs = file.getInputStream()) {
                // create the Workbook using the InputStream returned by 
                // MultipartFile#getInputStream()
                Workbook wb = WorkbookFactory.create(excelIs); 
                // get the first sheet of the Workbook
                Sheet sheet = wb.getSheetAt(0); 

                Iterator<Row> rowIt = sheet.rowIterator();
                // iterating rows..
                while (rowIt.hasNext()) { 
                    Row currentRow = rowIt.next();
                    // as an example, i'm getting the string value of 
                    // the first cell in the current iteration
                    String firstCellStringValue = currentRow.getCell(0).getStringCellValue();

                    log.info("{} is the value of the 1st cell in the {} row", firstCellStringValue, currentRow.getRowNum() + 1); // need to do + 1 cause the index starts at zero..
                }
            } catch(IOException e) {
                // .. nothing to do, you could rethrow a custom exception or 
                // add throws declaration
                throw new CustomException("Failed to process");
            }

        } else {
            throw new CustomException("The file should be a .xlsx");
        }

        return ResponseEntity.ok(...); // your return
    }

}
 类似资料:
  • 我是一名nodejs程序员。现在我有了一个我想以Excel文件格式保存的数据表。我该怎么做呢? 我找到了几个节点库。但大多数都是Excel解析器而不是Excel编写器。我使用的是Linux服务器。因此需要一些可以在Linux上运行的东西。请让我知道,如果有任何有用的图书馆,你知道。

  • 问题内容: 我是一个nodejs程序员。现在,我有了要以Excel File格式保存的数据表。我该怎么做呢? 我发现了一些Node库。但是大多数都是Excel解析器而不是Excel Writer。我使用的是Linux Server。因此需要一些可以在Linux上运行的工具。如果您知道任何有用的库,请告诉我。 还是有办法将CSV文件(以编程方式)转换为xls文件? 问题答案: excel4node是

  • 我有个问题。当我有其他实体时,我不知道如何创建API。我与邮递员工作,当我做一个请求,以看到所有项目从数据库,我想收到实体也。 例如,这是我的实体:

  • 有Java开发人员的库,有大量的方法在Android上不起作用。 我开始使用像OpenCSV这样的库,但不幸的是,Excel已经知道了打开CSV文件的问题。 然后我试着用: ApachePOI——它的方法肯定太多了 JExcelAPI——它可以工作,但只在旧的二进制文件上工作。xls文件 docx4j——还是太多JAR了,因为它基于JAXB,而Android中不包括JAXB 我的问题是,如何在中创

  • 本文向大家介绍C# WinForm创建Excel文件的实例,包括了C# WinForm创建Excel文件的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇C# WinForm创建Excel文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我正在尝试将Excel文档转换为SQL 2005中的表。我找到了下面的链接,并且想知道它是否看起来像解决方案。如果是这样,@ excel_full_file_name语法是什么,路径相对于哪里? http://www.siccolo.com/Articles/SQLScripts/how-to-create-sql-to-convert- Excel_to_table.html 问题答