账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java导出压缩包(压缩包里有excel文件和多张图片)
    31
    0

    最近接了一个需求,导出图片和excel,思考之后打算用生成excel和从服务器上下载图片放入压缩包提供给用户的导出的方式实现,但是由于没做过压缩包导出,有些地方不懂如何去做,将目前的思路说出来,希望各位大牛指点或者有相似的demo可以供小女子参考
    q1:第一步先导出excel到服务器指定文件夹中?
    q2:第二步根据数据库中的图片url下载到服务器指定文件夹中(与excel同文件夹)?
    q3:触发浏览器保存弹窗,用户保存到指定路径

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Java中,我们可以使用Apache Commons Net库来创建一个ZipOutputStream对象,然后使用ZipEntry类来创建ZipEntry对象。以下是一个示例,它创建了一个ZipOutputStream对象,然后使用ZipEntry类来创建了一个ZipEntry对象,然后将Excel文件和多张图片添加到ZipOutputStream中:

      ```java import org.apache.commons.net.util.ZipEntry; import org.apache.commons.net.util.ZipOutputStream; import org.apache.poi.ss.usermodel.; import java.io.;

      public class Main { public static void main(String[] args) throws IOException { // 创建一个ZipOutputStream对象 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("output.zip"));

          // 创建一个ZipEntry对象
          ZipEntry excelEntry = new ZipEntry("output.xlsx");
          ZipEntry imageEntry = new ZipEntry("output.jpg");
      
          // 将Excel文件添加到ZipEntry对象中
          Workbook workbook = new Workbook();
          Sheet sheet = workbook.getSheetAt(0);
          for (Row row : sheet) {
              for (Cell cell : row) {
                  CellValue value = new CellValue(cell.getStringCellValue());
                  sheet.cell(row, cell.getColumnIndex()).setValue(value);
              }
          }
          workbook.save();
      
          // 将多张图片添加到ZipEntry对象中
          File dir = new File("path/to/your/directory");
          File[] files = dir.listFiles();
          for (File file : files) {
              if (file.isFile()) {
                  ZipEntry imageEntry = new ZipEntry(file.getName());
                  imageEntry.setSize(file.length());
                  imageEntry.putNextEntry(zipOut);
                  byte[] bytes = new byte[1024];
                  FileInputStream fis = new FileInputStream(file);
                  fis.read(bytes);
                  fis.close();
                  zipOut.putNextEntry(imageEntry);
                  zipOut.write(bytes);
                  zipOut.closeEntry();
              }
          }
          zipOut.close();
      }
      

      } ```

      在这个示例中,我们首先创建了一个ZipOutputStream对象,然后创建了一个ZipEntry对象,用于存储Excel文件和多张图片。然后,我们使用Workbook对象来读取Excel文件和多张图片,将它们添加到ZipEntry对象中。最后,我们关闭ZipOutputStream和ZipEntry对象。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部