java生成excel并作为邮件附件发送
时间: 2024-11-09 13:27:07 浏览: 13
在Java中,你可以使用Apache POI库来创建Excel文件,然后将其转换为字节流,并作为邮件的附件发送出去。以下是简单的步骤:
1. **添加依赖**:
首先,在你的项目中引入Apache POI(HSSF for旧版本,XSSF for新版本)和JavaMail库。如果你使用Maven,可以在pom.xml文件中添加如下依赖:
```xml
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version> <!-- 或者最新版本 -->
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.6.2</version> <!-- 或者最新版本 -->
</dependency>
</dependencies>
```
2. **创建Excel**:
使用`HSSFWorkbook`或`XSSFWorkbook`对象(取决于你需要处理的是老版的xls还是新版xlsx)创建一个新的工作簿,并添加工作表、数据等。
```java
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
```
3. **保存为附件**:
将工作簿转换为字节流,然后设置为邮件的附件。
```java
InputStream fileOut = null;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
workbook.write(os);
fileOut = new ByteArrayInputStream(os.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.attachFile(fileOut, "example.xlsx");
```
4. **构造并发送邮件**:
使用JavaMail API创建SMTP会话,设置发件人、收件人、主题以及邮件内容,最后将附件添加到邮件中发送。
```java
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
// ...省略其他邮件配置
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.example.com"); // 你的SMTP服务器地址
Session session = Session.getInstance(props, new Authenticator() {...});
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("from@example.com"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("to@example.com"));
msg.setSubject("Subject");
msg.setContent(multipart);
msg.saveChanges();
Transport.send(msg);
```
阅读全文