Java HSSF。如何对字符串中的每一列进行压缩?

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

我的数据以某种格式存储(向下看):[-]表示空白单元格, 右边的空格后可能只有10列。大概是这样的:

        [string0] [-] [string1] [string2] [string3] .. [string10] [-]
如何将此代码更改为:

  • 获取完整字符串,每行fullString=[-][string1][string2][string3]。。[string10][-]。StringBuilder?或者如何

    //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();
            }
        }
    }