JS 导出Excle(多个sheet 页并且用wps打开不会报文件错误)

本文介绍如何使用xlsx.full.min.js和jquery.min.js两个JS库,将二维数组数据导出为Excel文件,包括单个sheet和多个sheet的Excel导出方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用到的JS库 

  1. jquery.min.js:下载地址 https://code.jquery.com/jquery-3.4.1.min.js
  2. xlsx.full.min.js:下载地址 https://github.com/SheetJS/sheetjs/blob/master/dist/xlsx.full.min.js

简单的导出Excel

<script type="text/javascript" src="xlsx.full.min.js"></script>
<script type="text/javascript" src="jquery.min.js"></script>
<script >
// 二维表数据
list_data = [['col1','col2', 'col3', 'col4'], [1,'a', 'b','c'], [2,'a', 'b','c']]
// sheet 子页名称
var ws_name = 'one_sheet'
var wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, XLSX.utils.aoa_to_sheet(list_data), ws_name);
// 表的名称
filename = "one.xlsx"
XLSX.writeFile(wb, filename);

</script >

可以看出,xlsx.full.min.js需要的是一组二维数组

导出带有多个 sheet Excel

<script type="text/javascript" src="xlsx.full.min.js"></script>
<script type="text/javascript" src="jquery.min.js"></script> 
<script>
// 生成表格 sheet_data = {"name":[[col1,col2,col2,col4]] , }
  function write_xlsx(filename, sheet_data_list){ 
    var wb = XLSX.utils.book_new()    
    for (ws_name in sheet_data_list){
        //分页写入数据
        XLSX.utils.book_append_sheet(wb,XLSX.utils.aoa_to_sheet(sheet_data_list[ws_name]), 
                            ws_name);
     }
    /* 写入文件*/
    XLSX.writeFile(wb, filename);
   }
</script>

 

### 回答1: Java可以使用Apache POI库来导出Excel文件,其中包括导出多个sheet的功能。 以下是一个示例代码,演示如何使用POI库导出两个sheet的Excel文件: ```java import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; public class ExcelExporter { public static void main(String[] args) throws IOException { // 创建一个新的工作簿 Workbook workbook = new HSSFWorkbook(); // 创建第一个sheet Sheet sheet1 = workbook.createSheet("Sheet1"); // 在第一个sheet中添加数据 sheet1.createRow(0).createCell(0).setCellValue("第一个sheet的第一行第一列"); sheet1.createRow(1).createCell(0).setCellValue("第一个sheet的第二行第一列"); // 创建第二个sheet Sheet sheet2 = workbook.createSheet("Sheet2"); // 在第二个sheet中添加数据 sheet2.createRow(0).createCell(0).setCellValue("第二个sheet的第一行第一列"); sheet2.createRow(1).createCell(0).setCellValue("第二个sheet的第二行第一列"); // 将工作簿写入文件 FileOutputStream fileOut = new FileOutputStream("workbook.xls"); workbook.write(fileOut); fileOut.close(); // 关闭工作簿 workbook.close(); } } ``` 在上面的示例代码中,我们创建了一个新的工作簿,并使用`createSheet()`方法创建了两个sheet。然后,我们在每个sheet中添加了一些数据,并将工作簿写入文件。最后,我们关闭了工作簿。 注意,上面的示例代码使用的是HSSFWorkbook类,这是POI库中用于处理Excel 97-2003文件格式的类。如果您需要处理Excel 2007及以上版本的文件格式,可以使用XSSFWorkbook类。 ### 回答2: 在Java中,我们可以使用Apache POI库来导出Excel文件。如果要导出两个sheet,可以按照以下步骤: 1. 导入POI库。 可以使用Maven或手动下载POI库的jar文件,然后在项目中导入。具体步骤可以参考POI官方文档。 2. 创建工作簿对象和两个工作表对象。 ```java // 创建工作簿对象 Workbook workbook = new XSSFWorkbook(); // 创建第一个工作表对象 Sheet sheet1 = workbook.createSheet("Sheet1"); // 创建第二个工作表对象 Sheet sheet2 = workbook.createSheet("Sheet2"); ``` 3. 填充工作表数据。 这里以sheet1为例,假设我们要往该工作表中填充一些数据。我们可以使用Row和Cell对象来完成。 ```java // 创建第一行并填充数据 Row row1 = sheet1.createRow(0); Cell cell1 = row1.createCell(0); cell1.setCellValue("姓名"); Cell cell2 = row1.createCell(1); cell2.setCellValue("年龄"); // 创建第二行并填充数据 Row row2 = sheet1.createRow(1); Cell cell3 = row2.createCell(0); cell3.setCellValue("张三"); Cell cell4 = row2.createCell(1); cell4.setCellValue(20); // ... ``` 类似地,我们可以在sheet2中填充数据。 4. 导出Excel文件。 最后一步就是将工作簿对象写入到Excel文件中。这里以将Excel文件写入到本地磁盘为例。 ```java try { FileOutputStream fos = new FileOutputStream("test.xlsx"); workbook.write(fos); fos.close(); } catch (IOException e) { e.printStackTrace(); } ``` 完整的代码示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExportExcel { public static void main(String[] args) { // 创建工作簿对象 Workbook workbook = new XSSFWorkbook(); // 创建第一个工作表对象 Sheet sheet1 = workbook.createSheet("Sheet1"); // 填充工作表1数据 Row row1 = sheet1.createRow(0); Cell cell1 = row1.createCell(0); cell1.setCellValue("姓名"); Cell cell2 = row1.createCell(1); cell2.setCellValue("年龄"); Row row2 = sheet1.createRow(1); Cell cell3 = row2.createCell(0); cell3.setCellValue("张三"); Cell cell4 = row2.createCell(1); cell4.setCellValue(20); // 创建第二个工作表对象 Sheet sheet2 = workbook.createSheet("Sheet2"); // 填充工作表2数据 Row row3 = sheet2.createRow(0); Cell cell5 = row3.createCell(0); cell5.setCellValue("城市"); Cell cell6 = row3.createCell(1); cell6.setCellValue("邮编"); Row row4 = sheet2.createRow(1); Cell cell7 = row4.createCell(0); cell7.setCellValue("北京"); Cell cell8 = row4.createCell(1); cell8.setCellValue("100001"); // 导出Excel文件 try { FileOutputStream fos = new FileOutputStream("test.xlsx"); workbook.write(fos); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` ### 回答3: 在Java中通过使用POI库可以实现Excle文件导出,同时可以在文件中添加多个sheet。 首先,我们需要引入POI的jar包,如下: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` 然后,在编写代码前,需要明确一下两个sheet的数据来源及其字段。为了方便,我们可以定义一个对象来表示一条数据,如下: ```java public class Data { private String field1; private String field2; // ...其它字段和getter/setter方法省略... } ``` 接下来,我们需要编写一个导出方法,如下: ```java public void exportToExcel(List<Data> sheet1Data, List<Data> sheet2Data) { HSSFWorkbook workbook = new HSSFWorkbook(); // 创建sheet1 HSSFSheet sheet1 = workbook.createSheet("Sheet1"); // 创建sheet2 HSSFSheet sheet2 = workbook.createSheet("Sheet2"); // 导出sheet1的数据 int rowNum = 0; // 创建标题行 HSSFRow titleRow = sheet1.createRow(rowNum++); titleRow.createCell(0).setCellValue("字段1"); titleRow.createCell(1).setCellValue("字段2"); // ...可以根据实际情况添加更多的字段... // 填充数据 for (Data data : sheet1Data) { HSSFRow row = sheet1.createRow(rowNum++); row.createCell(0).setCellValue(data.getField1()); row.createCell(1).setCellValue(data.getField2()); // ...可以根据实际情况添加更多的字段... } // 导出sheet2的数据 rowNum = 0; // 创建标题行 titleRow = sheet2.createRow(rowNum++); titleRow.createCell(0).setCellValue("字段1"); titleRow.createCell(1).setCellValue("字段2"); // ...可以根据实际情况添加更多的字段... // 填充数据 for (Data data : sheet2Data) { HSSFRow row = sheet2.createRow(rowNum++); row.createCell(0).setCellValue(data.getField1()); row.createCell(1).setCellValue(data.getField2()); // ...可以根据实际情况添加更多的字段... } // 写入到文件中 try { FileOutputStream fileOut = new FileOutputStream("output.xls"); workbook.write(fileOut); fileOut.close(); System.out.println("导出成功!"); } catch (IOException e) { e.printStackTrace(); } } ``` 在该方法中,首先创建了两个sheet,然后分别填充数据,最后将数据写入到文件中。 需要注意的是,使用HSSFWorkbook创建的文件格式为.xls,如果需要创建.xlsx格式的文件,则需要使用XSSFWorkbook。同时,上述代码中只是简单地导出了两个sheet,并未包含完整的参数校验及异常处理等代码,具体实现中需要根据实际情况进行完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值