Java获取Excel中的数据,数据包含字母和中文把字母和中文拆分写到新的Excel中
时间: 2023-11-22 17:52:50 浏览: 62
可以使用Java中的Apache POI库来读取Excel文件,然后对数据进行处理,最后再写入到新的Excel文件中。
以下是一个示例代码,可以实现将原始Excel中的数据按照字母和中文分别拆分写入到新的Excel文件中:
```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ExcelDataSplitter {
public static void main(String[] args) throws Exception {
// 读取原始Excel文件
File inputFile = new File("input.xlsx");
FileInputStream inputStream = new FileInputStream(inputFile);
Workbook workbook = WorkbookFactory.create(inputStream);
// 创建新的Excel文件
File outputFile = new File("output.xlsx");
FileOutputStream outputStream = new FileOutputStream(outputFile);
Workbook newWorkbook = WorkbookFactory.create(true);
// 遍历原始Excel文件中的所有Sheet
for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
// 创建新的Sheet
Sheet newSheet = newWorkbook.createSheet(sheet.getSheetName());
// 遍历原始Sheet中的所有行
for (Row row : sheet) {
Row newRow = newSheet.createRow(row.getRowNum());
// 遍历原始行中的所有单元格
for (Cell cell : row) {
String cellValue = cell.getStringCellValue();
// 将单元格中的字母和中文分别拆分
List<String> letters = new ArrayList<>();
List<String> chineseChars = new ArrayList<>();
for (int i = 0; i < cellValue.length(); i++) {
char c = cellValue.charAt(i);
if (Character.isLetter(c)) {
letters.add(String.valueOf(c));
} else if (Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN) {
chineseChars.add(String.valueOf(c));
}
}
// 将字母和中文分别写入新的单元格
String lettersValue = String.join("", letters);
String chineseCharsValue = String.join("", chineseChars);
Cell newCell1 = newRow.createCell(cell.getColumnIndex() * 2);
newCell1.setCellValue(lettersValue);
Cell newCell2 = newRow.createCell(cell.getColumnIndex() * 2 + 1);
newCell2.setCellValue(chineseCharsValue);
}
}
}
// 将新的Excel文件保存到磁盘
newWorkbook.write(outputStream);
// 清理资源
newWorkbook.close();
outputStream.close();
workbook.close();
inputStream.close();
}
}
```
在上面的代码中,我们首先使用`WorkbookFactory.create()`方法读取原始Excel文件,并创建一个新的Excel文件。然后,我们遍历原始Excel文件中的所有Sheet、行和单元格,将单元格中的字母和中文拆分后分别写入到新的Excel文件中。最后,我们使用`Workbook.write()`方法将新的Excel文件保存到磁盘,并清理所有资源。
请注意,上面的代码只是一个示例,如果原始Excel文件中包含其他类型的数据(例如数字、日期等),则需要相应地修改代码。
阅读全文