如何用Java将Web表格表头与数据格式化为表格并保存到文件
Web表格数据格式化保存方案
假设你已经通过Selenium拿到了表头列表(比如headers = ['列1', '列2', ...])和数据行列表(比如rows = [['值1-1', '值1-2', ...], ['值2-1', '值2-2', ...]]),以下是几种能实现需求的实用方法:
1. 纯文本对齐表格(适合直接查看)
生成类似终端输出的规整表格,可读性强,适合快速校验结构。
代码实现
def save_formatted_table(headers, rows, file_path): # 计算每列的最大宽度(包含表头和所有行数据) column_widths = [] for col_idx in range(len(headers)): max_len = len(headers[col_idx]) for row in rows: current_len = len(str(row[col_idx])) if current_len > max_len: max_len = current_len column_widths.append(max_len + 2) # 额外留2个空格做边距 # 格式化单一行的函数 def build_row(row_data): return '| ' + ' | '.join(f"{str(item).ljust(width)}" for item, width in zip(row_data, column_widths)) + ' |' # 生成分隔线 separator = '+' + '+'.join(['-' * width for width in column_widths]) + '+' # 写入文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(separator + '\n') f.write(build_row(headers) + '\n') f.write(separator + '\n') for row in rows: f.write(build_row(row) + '\n') f.write(separator + '\n') # 调用示例(替换成你提取的真实数据) headers = ['姓名', '年龄', '部门'] rows = [['张三', '28', '研发部'], ['李四', '32', '市场部']] save_formatted_table(headers, rows, 'table_output.txt')
2. CSV格式保存(兼容表格工具)
如果后续需要导入Excel、Google Sheets等工具做对比验证,CSV是最便捷的选择,实现也最简单。
代码实现
import csv def save_to_csv(headers, rows, file_path): with open(file_path, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(headers) # 写入表头 writer.writerows(rows) # 批量写入数据行 # 调用示例 save_to_csv(headers, rows, 'table_output.csv')
3. HTML格式保存(还原原始表格结构)
如果需要完全复刻网页表格的结构,保存为HTML格式的文本文件,打开后就是和网页一致的表格样式。
代码实现
def save_as_html_table(headers, rows, file_path): html_content = '<table border="1" cellpadding="4" cellspacing="0">\n' # 写入表头 html_content += ' <tr>\n' for header in headers: html_content += f' <th>{header}</th>\n' html_content += ' </tr>\n' # 写入数据行 for row in rows: html_content += ' <tr>\n' for cell in row: html_content += f' <td>{cell}</td>\n' html_content += ' </tr>\n' html_content += '</table>' with open(file_path, 'w', encoding='utf-8') as f: f.write(html_content) # 调用示例 save_as_html_table(headers, rows, 'table_output.html')
关键注意点
- 确保提取的表头和每行数据的列数完全一致,避免格式错乱
- 特殊字符处理:如果数据包含
|(纯文本表格)或逗号(CSV),需要提前转义,比如CSV中用双引号包裹含逗号的内容 - 统一使用
utf-8编码写入文件,避免中文乱码
内容的提问来源于stack exchange,提问作者Avdhut Joshi
相关产品推荐
相关产品推荐

