用java代码生成excel模板一模一样的表格
时间: 2023-07-27 07:23:28 浏览: 97
要用Java代码生成与Excel模板一模一样的表格,您可以使用 POI 库来创建 Excel 文件,然后按照模板的格式设置表格的内容、样式和格式。
下面是一个简单的示例,演示了如何使用 POI 库创建一个包含表头和数据的 Excel 文件:
```java
public static void main(String[] args) throws IOException {
// 创建 Excel 工作簿
Workbook workbook = new XSSFWorkbook();
// 创建 Excel 工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 设置表头
Row headerRow = sheet.createRow(0);
String[] headers = {"Name", "Age", "Gender", "Address"};
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
}
// 设置数据
List<Person> persons = Arrays.asList(
new Person("Alice", 25, "F", "123 Main St."),
new Person("Bob", 30, "M", "456 High St."),
new Person("Charlie", 35, "M", "789 Pleasant St.")
);
int rowNum = 1;
for (Person person : persons) {
Row row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(person.getName());
row.createCell(1).setCellValue(person.getAge());
row.createCell(2).setCellValue(person.getGender());
row.createCell(3).setCellValue(person.getAddress());
}
// 保存 Excel 文件
FileOutputStream fileOut = new FileOutputStream("output.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
static class Person {
private String name;
private int age;
private String gender;
private String address;
public Person(String name, int age, String gender, String address) {
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public String getAddress() {
return address;
}
}
```
在这个示例中,我们首先创建了一个新的 Excel 工作簿和工作表。然后,我们设置了表头和数据,将数据填充到工作表中,并保存 Excel 文件。
需要注意的是,在设置表头和数据时,我们需要根据 Excel 模板中的格式来设置单元格的样式和格式,以确保生成的 Excel 文件与模板一致。如果您有模板文件,可以通过读取模板文件来获取表头和数据区域的位置和格式。
阅读全文
相关推荐
还不是很完善,可以自己加以封装
// JavaScript Document
var BoxWidth = 700// 资料表显示宽度 ( 不含卷轴 )
var ShowLine = 15// 资料表显示列数
var RsHeight = 21// 资料列高度
var LockCols = 1// 要锁定的栏位数 ( 由左至右 )
function WriteTable(){// 写入表格
var iBoxWidth=BoxWidth
var NewHTML=""
for(i=0;i<DataTitles.length;i++){
if(i<LockCols){
var cTitle=DataTitles[i].split("#")
iBoxWidth-=cTitle[1]
var DynTip=((i+1)==LockCols)?"解除锁定":"锁定此栏位"
NewHTML+="<td><span>"+cTitle[0]+""
}
}
NewHTML+=" "
for(i=0;i<DataTitles.length;i++){
if(i>=LockCols){
var cTitle=DataTitles[i].split("#")
NewHTML+=""+cTitle[0]+" "
}
}
NewHTML+=" "
DataTable.innerHTML=NewHTML
ApplyData()
}
function ApplyData(){// 写入资料
var NewHTML=""
for(i=0;i<DataFields.length;i++){
NewHTML+="<tr>"
for(j=0;j<DataTitles.length;j++){
if(j<LockCols){
var cTitle=DataTitles[j].split("#")
NewHTML+="<td><span>"+DataFields[i][j]+""
}
}
NewHTML+=""
}
NewHTML+=""
DataGroup1.innerHTML=NewHTML
var NewHTML=""
for(i=0;i<DataFields.length;i++){
NewHTML+="<tr>"
for(j=0;j<DataTitles.length;j++){
if(j>=LockCols){
var cTitle=DataTitles[j].split("#")
NewHTML+=""+DataFields[i][j]+" "
}
}
NewHTML+=""
}
NewHTML+=""
DataGroup2.innerHTML=NewHTML
DataFrame1.style.pixelHeight=RsHeight*ShowLine
DataFrame2.style.pixelHeight=RsHeight*ShowLine
DataFrame3.style.pixelHeight=RsHeight*ShowLine+RsHeight
DataGroup3.style.pixelHeight=RsHeight*(DataFields.length+1)
}
function ResetTable(n){
var iBoxWidth=0
for(i=0;i<DataTitles.length;i++){
if(i<(n+1)){
var cTitle=DataTitles[i].split("#")
iBoxWidth+=parseInt(cTitle[1])
}
}
if(iBoxWidth>BoxWidth){
var Sure=confirm("\n锁定栏位的宽度大於资料表显示的宽 \n\n度,这可能会造成版面显示不正常。\n\n\n您确定要继续吗?")
}else{
Sure=true
}
if(Sure){
LockCols=(LockCols==n+1)?0:n+1
WriteTable()
}
}
function SYNC_Roll(){
DataGroup1.style.posTop=-DataFrame3.scrollTop
DataGroup2.style.posTop=-DataFrame3.scrollTop
}
window.onload=WriteTable