获取项目中已经生成在资源文件路径下的excel的位置

当我在自己本地运行时,代码这样写,是没问题的,但是之后放在服务器上发下一值找不到路径

这是在本地写的方法,两个都好使,一个是返回文件流,一个是返回string类型的文件路径。

在上传到服务器上不好使之后改为用线程获取,成功,之后在本地运行也成功。有一点要注意就是路径前面在服务器上要不能加点,在本地要加点。大概原因是有点是找相对路径,不加点找的是绝对路径,在服务器上打成jar包之后无法找到相对路径,只能找绝对路径。这一点要注意。

之后又了解到还有另外三种方法:

第二种:

ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");
InputStream inputStream =classPathResource.getInputStream();

第三种:

In
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将Excel文件生成图片,你可以使用Java的Apache POI和Apache Batik库。下面是一个简单的示例代码: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.batik.dom.GenericDOMImplementation; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.PNGTranscoder; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import java.io.*; public class ExcelToImageConverter { public static void main(String[] args) { String excelFilePath = "path/to/excel/file.xlsx"; String outputImagePath = "path/to/output/image.png"; try { Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath)); Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 // 创建SVGGraphics2D对象 DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); Document document = domImpl.createDocument(null, "svg", null); SVGGraphics2D svgGenerator = new SVGGraphics2D(document); // 从Excel绘制到SVGGraphics2D对象 sheet.autoSizeColumn(0); // 自动调整第一列宽度 sheet.autoSizeColumn(1); // 自动调整第二列宽度 sheet.autoSizeColumn(2); // 自动调整第三列宽度 sheet.autoSizeColumn(3); // 自动调整第四列宽度 sheet.autoSizeColumn(4); // 自动调整第五列宽度 sheet.autoSizeColumn(5); // 自动调整第六列宽度 sheet.autoSizeColumn(6); // 自动调整第七列宽度 // 将Excel绘制到SVGGraphics2D对象 sheet.createDrawingPatriarch().draw(svgGenerator); // 创建PNGTranscoder并设置输出参数 PNGTranscoder transcoder = new PNGTranscoder(); transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, (float) sheet.getDrawingPatriarch().getPreferredSize().getWidth()); transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, (float) sheet.getDrawingPatriarch().getPreferredSize().getHeight()); // 转码为PNG格式并保存为图片文件 OutputStream outputStream = new FileOutputStream(outputImagePath); TranscoderInput input = new TranscoderInput(svgGenerator.getSVGDocument()); TranscoderOutput output = new TranscoderOutput(outputStream); transcoder.transcode(input, output); outputStream.flush(); outputStream.close(); System.out.println("Excel文件已成功转换为图片!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 你需要将`excelFilePath`替换为你的Excel文件路径,将`outputImagePath`替换为输出图片的路径。这段代码使用Apache POI库读取Excel文件,然后使用Apache Batik库将Excel绘制到SVGGraphics2D对象,最后转码为PNG格式并保存为图片文件。 请确保你的项目包含了Apache POI和Apache Batik的相关依赖。你可以在Maven或Gradle添加以下依赖: Apache POI: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` Apache Batik: ```xml <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-dom</artifactId> <version>1.13</version> </dependency> <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-svggen</artifactId> <version>1.13</version> </dependency> <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-transcoder</artifactId> <version>1.13</version> </dependency> ``` 希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值