在页面上显示Excel文件中的内容

博客介绍了在ASP.NET中实现将Excel内容显示在DataGrid控件上的方法。首先创建Excel文件,选择显示内容并命名区域,保存到指定位置;然后新建ASP.NET应用程序,拖放DataGrid控件,在后台编码文件引用相关名称空间,编写代码连接数据库、填充数据集并绑定到控件。
第一步,创建Excel文件。
Excel文件的创建很容易,关键的一步是选择你要在页面中显示的内容,选择菜单“插入”-》“名称”-》“定义”,输入你对当前选择区域的命名。在这里,我命名为myRange1,这在后面将要用到。Excel文件编辑好之后,将它保存到硬盘上。我这里保存到了Web服务器的根目录中,当然你也可以保存任意位置,但你要注意在代码中做一定的修改。

第二步,编码。
新建一个ASP.NET应用程序,在默认的WebForm1.aspx中,拖放一个DataGrid控件,它将用来显示Excel中的内容。打开后台编码文件,引用名称空间System.Data.OleDb,因为后面的代码中将用到此名称空间。在Page_Load()事件中插入以下代码:
            // 创建字符串变量。"Data Source"为.xls文件所在的位置
            string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;"+
                
"Data Source="+Server.MapPath("../ExcelData.xls")+";"+
                
"Extended Properties=Excel 8.0;";

            
// 创建连接对象
            OleDbConnection objConnection = new OleDbConnection(strConnection);

            
// 创建OleDbCommand对象。myRange1是Excel文件中定义的区域名
            OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM myRange1",objConnection);

            OleDbDataAdapter objAdapter 
= new OleDbDataAdapter();
            DataSet dsExcel 
= new DataSet();

            
// 打开数据库连接
            objConnection.Open();

            objAdapter.SelectCommand 
= objCmdSelect;
            objAdapter.Fill(dsExcel
);

            
// 把数据绑定到DataGrid控件上
            DataGrid1.DataSource = dsExcel.Tables[0].DefaultView;
            DataGrid1.DataBind();

            
// 关闭数据库连接
            objConnection.Close();

<think> 我们在回答用户问题时,需要参考提供的引用内容,但也要注意用户的实际需求:读取Excel显示页面上。 根据引用,我们可以知道: 1. 使用Apache POI是常见方法(引用[1][3]) 2. 读取Excel的基本步骤(引用[1][3]) 3. 引用[4]提到了将每行数据读取并储为Map,这可以用于后续展示 因此,我们可以这样设计: 步骤1:添加POI依赖 步骤2:编写读取Excel的方法,将数据读取为List<Map>(每行对应一个Map,键为列标题,值为单元格内容)或List<List>(每行一个List,每个元素为单元格内容)等结构 步骤3:在Web项目中,将读取的数据传递给前端页面(例如JSP、Thymeleaf等)进行展示 注意:用户问题中要求显示页面上,因此我们还需要考虑Web环境。 由于引用中没有具体提到Web展示部分,我们将结合POI读取Web展示给出基本步骤。 另外,引用[2]提到了GCExcel,但用户没有特别要求,我们以POI为例,因为引用[1][3][4]都用了POI。 以下是具体步骤代码示例: </think> ### Java读取Excel文件内容显示页面上的实现方法 #### 1. **添加依赖** 在Maven项目中添加Apache POI依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.3</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> ``` #### 2. **读取Excel数据(后端Java)** ```java import org.apache.poi.ss.usermodel.*; import java.io.File; import java.util.*; public class ExcelReader { public static List<Map<String, String>> readExcel(String filePath) throws Exception { List<Map<String, String>> data = new ArrayList<>(); Workbook workbook = WorkbookFactory.create(new File(filePath)); Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表 // 获取标题行(第一行) Row headerRow = sheet.getRow(0); List<String> headers = new ArrayList<>(); for (Cell cell : headerRow) { headers.add(cell.getStringCellValue()); } // 遍历数据行 for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); Map<String, String> rowData = new LinkedHashMap<>(); for (int j = 0; j < headers.size(); j++) { Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK); rowData.put(headers.get(j), getCellValueAsString(cell)); } data.add(rowData); } workbook.close(); return data; } private static String getCellValueAsString(Cell cell) { return switch (cell.getCellType()) { case STRING -> cell.getStringCellValue(); case NUMERIC -> String.valueOf(cell.getNumericCellValue()); case BOOLEAN -> String.valueOf(cell.getBooleanCellValue()); default -> ""; }; } } ``` #### 3. **Servlet处理请求(后端)** ```java import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; @WebServlet("/read-excel") public class ExcelServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String filePath = "D:/data.xlsx"; // Excel文件路径 List<Map<String, String>> excelData = ExcelReader.readExcel(filePath); request.setAttribute("excelData", excelData); request.getRequestDispatcher("/result.jsp").forward(request, response); } catch (Exception e) { response.getWriter().println("读取失败: " + e.getMessage()); } } } ``` #### 4. **JSP页面展示数据(前端)** ```jsp <%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Excel数据展示</title> <style>table { border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; }</style> </head> <body> <h2>Excel文件内容</h2> <table> <tr> <!-- 动态生成表头 --> <c:forEach items="${excelData[0]}" var="header"> <th>${header.key}</th> </c:forEach> </tr> <!-- 动态生成数据行 --> <c:forEach items="${excelData}" var="row"> <tr> <c:forEach items="${row}" var="cell"> <td>${cell.value}</td> </c:forEach> </tr> </c:forEach> </table> </body> </html> ``` #### 关键点说明 1. **POI读取机制**: - `WorkbookFactory`自动识别`.xls`/`.xlsx`格式 - `Row.MissingCellPolicy.CREATE_NULL_AS_BLANK`处理空单元格 - 数据类型转换确保安全获取值[^1][^3] 2. **数据传递流程**: ```mermaid graph LR A[Excel文件] --> B(Java读取为List<Map>) B --> C[Servlet入request] C --> D[JSP渲染HTML表格] ``` 3. **扩展建议**: - 文件上传:通过`<input type="file">`动态获取文件路径 - 大数据量:使用POI的`SXSSFWorkbook`流式API避免OOM - 格式处理:添加日期/数字格式化工具类 - 异步加载:结合AJAX实现无刷新分页[^2] #### 注意事项 - 文件路径需有读取权限 - 超过10万行数据建议分页读取 - 中文乱码问题:确保JSP页面编码为UTF-8 - 安全性:对用户上传文件进行后缀名校验病毒扫描 [^1]: Apache POI基础操作指南 [^2]: 大数据量Excel处理方案 [^3]: Java Excel数据读取实现 [^4]: Excel到数据结构的转换方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值