String path = new FileTxtHandleUtil().projectSource(EXCEL_TEMPLATE_PATH3); FileInputStream fileInputStream = new FileInputStream(path);
时间: 2024-04-27 16:19:55 浏览: 114
这段Java代码是在获取一个文件的输入流。首先,它通过调用"FileTxtHandleUtil"工具类的"projectSource"方法,获取了一个名为"EXCEL_TEMPLATE_PATH3"的文件的路径,并将其赋值给了名为"path"的字符串变量。然后,它创建了一个"FileInputStream"对象,将"path"作为参数传入,从而获取了该文件的输入流。这个文件的路径可能是相对于Java项目源代码的相对路径,也可能是一个绝对路径。
相关问题
String path = new FileTxtHandleUtil().projectSource(EXCEL_TEMPLATE_PATH2); FileInputStream fileInputStream = new FileInputStream(path); Workbook workbook = ExcelTemplateUtil.buildByTemplate(fileInputStream, staticSource, dynamicSourceList); // 2.保存到本地 OutputStream outputStream = response.getOutputStream(); response.reset(); String fileName = URLEncoder.encode("白名单正确数据导出.xlsx", "UTF-8"); response.addHeader("Content-Length", resultList.size()+""); response.setHeader("Content-disposition", "attachment; filename=" + fileName); response.setContentType("Content-Type:application/vnd.ms-excel");response.addHeader("Content-Length", resultList.size()+"");怎么设置文件大小比较好
文件大小可以通过获取文件的字节数来设置。你可以在代码中使用以下方法获取文件的字节数:
```
long fileSize = new File(filePath).length();
```
然后,你可以将文件大小设置到响应头中:
```
response.setHeader("Content-Length", String.valueOf(fileSize));
```
这样就可以将文件大小设置到响应头中了。
java导出excel带图片_JAVA的poi实现模版导出excel(带图片).doc
Java中使用POI库可以实现Excel文件的操作,包括读取、写入、修改等。下面是使用POI库实现带图片的模板导出Excel的示例代码:
1. 导入依赖库
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
```
2. 创建Excel模板
创建一个Excel模板,包含需要导出的数据和图片。示例模板如下:
![excel_template.png](https://cdn.jsdelivr.net/gh/occlive/ImageHost01/excel_template.png)
3. 编写Java代码
Excel模板创建完成后,就可以使用POI库来读取模板、填充数据和图片、导出Excel文件了。以下是示例代码:
```java
import java.io.*;
import java.util.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class ExcelExportUtil {
public static void export(List<Map<String, Object>> dataList, String templatePath, String exportPath) throws Exception {
InputStream is = new FileInputStream(templatePath);
XSSFWorkbook workbook = new XSSFWorkbook(is);
XSSFSheet sheet = workbook.getSheetAt(0);
int rowIndex = 1;
for (Map<String, Object> data : dataList) {
XSSFRow row = sheet.createRow(rowIndex++);
int cellIndex = 0;
for (String key : data.keySet()) {
Object value = data.get(key);
XSSFCell cell = row.createCell(cellIndex++);
if (value instanceof String) {
cell.setCellValue((String) value);
} else if (value instanceof Double) {
cell.setCellValue((Double) value);
} else if (value instanceof Date) {
cell.setCellValue((Date) value);
} else if (value instanceof Calendar) {
cell.setCellValue((Calendar) value);
} else if (value instanceof Boolean) {
cell.setCellValue((Boolean) value);
} else if (value instanceof byte[]) {
// 插入图片
int pictureIdx = workbook.addPicture((byte[]) value, Workbook.PICTURE_TYPE_JPEG);
CreationHelper helper = workbook.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(cellIndex - 1);
anchor.setRow1(rowIndex - 1);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize();
} else {
cell.setCellValue(value.toString());
}
}
}
OutputStream os = new FileOutputStream(exportPath);
workbook.write(os);
os.close();
}
}
```
代码解释:
- `export`方法接受一个数据列表、一个Excel模板文件路径和一个导出Excel文件路径作为参数,将数据填充到模板中并导出Excel文件
- 首先使用`FileInputStream`读取Excel模板文件,然后创建`XSSFWorkbook`和`XSSFSheet`对象
- 遍历数据列表,对于每个数据项,创建一个新的行,并为每个属性创建一个单元格,使用单元格的`setCellValue`方法填充数据
- 如果属性的值是一个图片,则调用`Workbook.addPicture`方法将图片添加到工作簿中,并使用`Sheet.createDrawingPatriarch`方法创建绘图对象,在单元格上创建图片,最后调用`Picture.resize`方法调整图片大小
- 最后使用`FileOutputStream`将工作簿写入Excel文件中
4. 调用导出方法
在main方法中调用export方法进行导出:
```java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
List<Map<String, Object>> dataList = new ArrayList<>();
Map<String, Object> data1 = new HashMap<>();
data1.put("name", "张三");
data1.put("age", 20);
data1.put("avatar", FileUtils.readFileToByteArray(new File("avatar.jpg")));
dataList.add(data1);
Map<String, Object> data2 = new HashMap<>();
data2.put("name", "李四");
data2.put("age", 25);
data2.put("avatar", FileUtils.readFileToByteArray(new File("avatar.jpg")));
dataList.add(data2);
ExcelExportUtil.export(dataList, "template.xlsx", "export.xlsx");
}
}
```
以上代码会生成一个包含两条记录和图片的Excel文件,效果如下:
![excel_export.png](https://cdn.jsdelivr.net/gh/occlive/ImageHost01/excel_export.png)
希望对您有所帮助!
阅读全文