加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从excel读取图像并将其存储在sqlserver中

发布时间:2020-12-15 02:10:18 所属栏目:Java 来源:网络整理
导读:我有一张叫做’tab1’的桌子 cl_id int //auto imcrementcl_image image 我想从图像中读取excel中的图像并将其存储在上表中 FileInputStream fileInputStream = new FileInputStream( "Delux.xls"); System.out.println(fileInputStream); HSSFWorkbook work
我有一张叫做’tab1’的桌子

cl_id int //auto imcrement
cl_image image

我想从图像中读取excel中的图像并将其存储在上表中

FileInputStream fileInputStream = new FileInputStream(
            "Delux.xls");
    System.out.println(fileInputStream);
    HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
    HSSFSheet worksheet = workbook.getSheet("Delux");
    Iterator rows = worksheet.rowIterator();
    HSSFRow row = (HSSFRow) rows.next();
      List lst = workbook.getAllPictures();
      Iterator it = lst.iterator();
    while (rows.hasNext()) {
        row = (HSSFRow) rows.next();

//reading the image from excel

        HSSFCell cellP1 = row.getCell((short) 1);
           PictureData pict = (PictureData)it.next();
            String ext = pict.suggestFileExtension();
            byte[] data = pict.getData();

                InputStream is = new ByteArrayInputStream(data);

        try {

            PreparedStatement stmt = getdbconn()
                    .prepareStatement(
                            "insert into tab1 (cl_image) values(?)");

            stmt.setBinaryStream(1,is);
            stmt.executeUpdate();
            is.close();
        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

但是当我动态存储图像时,我得到的错误就像

“String or binary data would be truncated”.

任何人都可以建议我一个方法来实现这一点???

解决方法

不支持IMAGE和TEXT等数据类型,不推荐使用它们. 因此将其更改为VARBINARY(最大).最重要的导入事物是IMAGE数据类型需要以特殊方式存储大小而不是扩展VARBINARY以满足任何方式一直到2GB.由于图像不适合cl_image字段,因此引发了错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读