String temDir="templates"+ File.separator+"project_letters.docx"; ;//生成临时文件存放地址删除也是按照这个路径,但删除不掉,他的生成文件是在外层的,怎么改
时间: 2024-04-15 12:27:23 浏览: 127
你可以尝试使用绝对路径来指定生成临时文件的存放地址。这样可以确保生成的文件在指定的位置,而不是在外层。你可以将`temDir`的值改为绝对路径,例如:
```java
String temDir = "C:/your/path/to/templates/project_letters.docx";
```
请将`C:/your/path/to`替换为你想要存放临时文件的实际路径。这样生成的文件将会在指定的路径下,而不会在外层。记得在删除文件时同样使用正确的路径来进行删除操作。
相关问题
String temDir="templates"+ File.separator+"project_letters.docx"; ;//生成临时文件存放地址删除也是按照这个路径,但删除不掉,他的生成文件是在外层的,怎么改,不能使用绝对路径
如果你不能使用绝对路径,你可以尝试以下方法来修改`temDir`以确保生成的临时文件存放在指定的路径下:
```java
String tempDir = System.getProperty("user.dir") + File.separator + "templates" + File.separator + "project_letters.docx";
```
这里使用了`System.getProperty("user.dir")`来获取当前工作目录的路径,然后拼接上`"templates"`和`"project_letters.docx"`来构建完整的临时文件路径。这样生成的文件应该会存放在你期望的位置。
请注意,使用相对路径时,确保当前工作目录是你期望的路径。如果你执行代码的位置不是你期望的路径,可能需要调整当前工作目录或者提供其他的参考路径来构建相对路径。
ProjectHistory projectHistory = projectHistoryService.getById(projectHistoryId); Unit unit = unitService.getById(projectHistory.getPricingUnitId()); List<ProjectCalculateResult> projectCalculateResultList = projectCalculateResultService.list(new LambdaQueryWrapperX<ProjectCalculateResult>().eq(ProjectCalculateResult::getProjectHistoryId, projectHistoryId)); //计算总数量 insideTaskService.statisticalOptions(projectCalculateResultList); String unitName = unit.getUnitName(); unitName = unitName.substring(0, 2); String projectName = projectHistory.getProjectName(); Map<String, Object> params = new HashMap<>(); ClassPathResource resource = new ClassPathResource("templates"+File.separator+"project_letters.docx"); InputStream inputStream = resource.getInputStream(); MyXWPFDocument doc = new MyXWPFDocument(inputStream); //简单渲染文本 params.put("projectName",projectName); params.put("unit",unitName); //渲染表格 List<Map<String, Object>> jobs = new ArrayList<>(); Map<String, Object> job; for (int i = 0; i < projectCalculateResultList.size(); i++) { job = new HashMap<>(); job.put("id", i+1); job.put("zxbz",projectCalculateResultList.get(i).getDecoration()); job.put("jsjd",projectCalculateResultList.get(i).getFamilyProperty()); BigDecimal projectRent = projectCalculateResultList.get(i).getProjectRent().setScale(2, BigDecimal.ROUND_HALF_UP); job.put("projectRent",projectRent); jobs.add(job); } params.put("jobs",jobs); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日"); String transformDate=simpleDateFormat.format(new Date()); params.put("dateTime",transformDate); String temDir="templates"+ File.separator+"project_letters.docx"; ;//生成临时文件存放地址 //生成文件名 Long time = new Date().getTime(); // 生成的word格式 String formatSuffix = ".docx"; // 拼接后的文件名 String fileName = time + formatSuffix;//文件名 带后缀 //导出word WordUtils.exportWordDoc(doc, temDir, fileName, params, request, response);怎么改才能将下载的文件字体为仿宋
要将下载的文件字体设置为仿宋,你需要在导出Word文档之前,将文档中的字体样式修改为仿宋。可以参考以下代码:
```java
// 渲染表格
List<Map<String, Object>> jobs = new ArrayList<>();
Map<String, Object> job;
for (int i = 0; i < projectCalculateResultList.size(); i++) {
job = new HashMap<>();
job.put("id", i+1);
job.put("zxbz", projectCalculateResultList.get(i).getDecoration());
job.put("jsjd", projectCalculateResultList.get(i).getFamilyProperty());
BigDecimal projectRent = projectCalculateResultList.get(i).getProjectRent().setScale(2, BigDecimal.ROUND_HALF_UP);
job.put("projectRent", projectRent);
// 设置字体为仿宋
XWPFRun run = (XWPFRun)job.get("projectRent");
run.setFontFamily("仿宋");
jobs.add(job);
}
params.put("jobs", jobs);
// 导出word
WordUtils.exportWordDoc(doc, temDir, fileName, params, request, response);
```
在上述代码中,我添加了一行代码来设置表格中"projectRent"字段的字体为仿宋。请确保系统中存在仿宋字体。这样,在导出的Word文档中,"projectRent"字段的字体将被设置为仿宋。
阅读全文