Java将一个excel拆分为多个excel

时间:2025-03-19 07:00:49
package hotelPro; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; public class WriteExcel { private static final String EXCEL_XLS = "xls"; private static final String EXCEL_XLSX = "xlsx"; public static void writeExcel(List<List<String>> dataList, int cloumnCount, String finalXlsxPath) { OutputStream out = null; try { // 读取Excel文档 File finalXlsxFile = new File(finalXlsxPath); Workbook workBook = getWorkbok(finalXlsxFile); // sheet 对应一个工作页 Sheet sheet = (0); /** * 删除原有数据,除了属性列 */ int rowNumber = (); // 第一行从0开始算 ("原始数据总行数,除属性列:" + rowNumber); for (int i = 1; i <= rowNumber; i++) { Row row = (i); (row); } // 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效 out = new FileOutputStream(finalXlsxPath); (out); /** * 往Excel中写新数据 */ for (int j = 0; j < (); j++) { // 创建一行:从第二行开始,跳过属性列 Row row = (j + 1); // 得到要插入的每一条记录 List<String> dataMap = (j); String cell1 = (0).toString(); String cell2 = (1).toString(); String cell3 = (2).toString(); String cell4 = (3).toString(); String cell5 = (4).toString(); String cell6 = (5).toString(); String cell7 = (6).toString(); // for (int k = 0; k <= columnNumCount; k++) { // 在一行内循环 Cell first = (0); (cell1); Cell second = (1); (cell2); Cell third = (2); (cell3); Cell four = (3); (cell4); Cell five = (4); (cell5); Cell six = (5); (cell6); Cell seven = (6); (cell7); // } } // 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效 out = new FileOutputStream(finalXlsxPath); (out); } catch (Exception e) { (); } finally { try { if (out != null) { (); (); } } catch (IOException e) { (); } } ("数据导出成功"); } /** * 判断Excel的版本,获取Workbook * * @param in * @param filename * @return * @throws IOException */ public static Workbook getWorkbok(File file) throws IOException { Workbook wb = null; FileInputStream in = new FileInputStream(file); if (().endsWith(EXCEL_XLS)) { // Excel 2003 wb = new HSSFWorkbook(in); } else if (().endsWith(EXCEL_XLSX)) { // Excel 2007/2010 wb = new XSSFWorkbook(in); } return wb; } /** * 根据fileType不同读取excel文件 * * @param path * @param path * @throws IOException */ @SuppressWarnings({ "resource", "deprecation" }) public static List<List<String>> readExcel(String path) { String fileType = ((".") + 1); // return a list contains many list List<List<String>> lists = new ArrayList<List<String>>(); // 读取excel文件 InputStream is = null; try { is = new FileInputStream(path); // 获取工作薄 Workbook wb = null; if (("xls")) { wb = new HSSFWorkbook(is); } else if (("xlsx")) { wb = new XSSFWorkbook(is); } else { return null; } // 读取第一个工作页sheet Sheet sheet = (0); // 第一行为标题 for (Row row : sheet) { ArrayList<String> list = new ArrayList<String>(); for (Cell cell : row) { // 根据不同类型转化成字符串 (Cell.CELL_TYPE_STRING); (()); } (list); } } catch (IOException e) { (); } finally { try { if (is != null) (); } catch (IOException e) { (); } } return lists; } public static void main(String[] args) throws IOException { String path = "F:\\Data\\"; List<List<String>> lists = readExcel(path); int size = (); //每个一万条 int a = size / 10000; for (int i = 0; i < a + 1; i++) { ("---------------------------" + i); List<List<String>> list; if (i == a) { list = (i * 1000, size+a); } else { list = (i * 1000, (i + 1) * 1000); } (0, (0)); String p = "split_" + i + ".xlsx"; (list, (), "F:\\Data\\" + p); } ("-------------"); } }