Java HSSF。如何对字符串中的每一列进行压缩?
我的数据以某种格式存储(向下看):[-]表示空白单元格, 右边的空格后可能只有10列。大概是这样的:Java HSSF。如何对字符串中的每一列进行压缩?,java,apache-poi,hssf,Java,Apache Poi,Hssf,我的数据以某种格式存储(向下看):[-]表示空白单元格, 右边的空格后可能只有10列。大概是这样的: [string0] [-] [string1] [string2] [string3] .. [string10] [-] 如何将此代码更改为: 获取完整字符串,每行fullString=[-][string1][string2][string3]。。[string10][-]。StringBuilder?或者如何 //Get first sheet from the work
[string0] [-] [string1] [string2] [string3] .. [string10] [-]
如何将此代码更改为:
//Get first sheet from the workbook
HSSFSheet sheet = workbook.getSheetAt(0);
//Iterate through each rows from first sheet
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
//For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t\t");
list1.add(cell.getStringCellValue());
break;
}
}
System.out.println("");
}
file.close();
FileOutputStream out =
new FileOutputStream("C:\\Users\\student3\\"+sfilename+".xls");
workbook.write(out);
out.close();
//从工作簿中获取第一张工作表
HSSFSheet sheet=工作簿。getSheetAt(0);
//从第一张图纸开始遍历每行
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
//对于每一行,遍历每一列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
开关(cell.getCellType()){
case Cell.Cell\u类型\u字符串:
System.out.print(cell.getStringCellValue()+“\t\t”);
列表1.add(cell.getStringCellValue());
打破
}
}
System.out.println(“”);
}
file.close();
文件输出流输出=
新的FileOutputStream(“C:\\Users\\student3\\”+sfilename+“.xls”);
练习册。写(出);
out.close();
外部链接: 下面是一个应该有效的例子 Maven依赖项:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
org.apache.poi
poi
3.9
org.apache.poi
poi ooxml
3.9
代码:
import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
导入org.apache.poi.openxml4j.exceptions.InvalidFormatException;
导入org.apache.poi.ss.usermodel.*;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.Iterator;
公共类堆栈溢出问题18095443{
公共静态void main(字符串[]args){
如果(args.length!=1){
System.out.println(“请指定文件名作为参数”);
系统退出(-1);
}
字符串sfilename=args[0];
File File=新文件(“C:\\Users\\student3\\”+sfilename+“.xls”);
读取(文件);
}
公共静态无效读取(文件){
try(InputStream in=新文件InputStream(文件)){
HSSFDataFormatter formatter=新的HSSFDataFormatter();
工作簿=WorkbookFactory.create(在中);
工作表=工作簿。getSheetAt(0);
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
StringBuilder rowText=新建StringBuilder();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
字符串cellAsStringValue=formatter.formatCellValue(单元格);
append(cellAsStringValue).append(“”);
}
System.out.println(rowText.toString().trim());
}
}捕获(无效格式异常| IOE异常){
e、 printStackTrace();
}
}
}
@长老,如果你对答案不满意,请发表一些评论,但不要针对同一个问题提出不同的思路。请不要发布重复的帖子;特别是如果你被禁止,不要创建新帐户来发布重复的内容。
import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
public class StackOverflowQuestion18095443 {
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("Please specify the file name as a parameter");
System.exit(-1);
}
String sfilename = args[0];
File file = new File("C:\\Users\\student3\\" + sfilename + ".xls");
read(file);
}
public static void read(File file) {
try (InputStream in = new FileInputStream(file)) {
HSSFDataFormatter formatter = new HSSFDataFormatter();
Workbook workbook = WorkbookFactory.create(in);
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
StringBuilder rowText = new StringBuilder();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String cellAsStringValue = formatter.formatCellValue(cell);
rowText.append(cellAsStringValue).append(" ");
}
System.out.println(rowText.toString().trim());
}
} catch (InvalidFormatException | IOException e) {
e.printStackTrace();
}
}
}