创建 excel 文件的副本未按预期工作

Creating a copy of an excel file is not working as expected

我想在替换 "' 后将一个 excel(.xls) 的全部内容复制到另一个. 然而,这段代码正在创建一个新的 excel 但只复制最后一列(在我的例子中,它是第 7 列)。请告诉我这段代码哪里出了问题...

public class 重命名 {

static HSSFRow row_read = null;
static HSSFRow row_write = null;
static Cell cell;
static FileOutputStream output = null;
static HSSFWorkbook workbook_read = null;
static HSSFWorkbook workbook_write = null;
static HSSFSheet sheet_read = null;
static HSSFSheet sheet_write = null;
public static void removechar()
{
try{
FileInputStream input = new FileInputStream("inputpath//test_input.xls");
workbook_read = new HSSFWorkbook(input);
sheet_read = workbook_read.getSheet("Report");
workbook_write = new HSSFWorkbook();
sheet_write = workbook_write.createSheet("Test");
DataFormatter formatter = new DataFormatter();
int rowCount = sheet_read.getLastRowNum();
System.out.println(rowCount);
for(int rowNum = 0; rowNum<=rowCount; rowNum++)
{
for(int cellNum = 0; cellNum<=7; cellNum++)
{
//Cell cell = null;
row_read=sheet_read.getRow(rowNum);
row_write = sheet_write.createRow(rowNum);
String temp = formatter.formatCellValue(row_read.getCell(cellNum));
//System.out.println(temp);
String temp1 = temp.replaceAll("\'", "");
String temp2 = temp1.replaceAll("\"", "");
System.out.println(temp2);
cell = row_write.createCell(cellNum);
cell.setCellValue(temp2);
}
}

output = new FileOutputStream("outputpath\test_output.xls");
workbook_write.write(output);

}
catch(Exception e)
{
    e.printStackTrace();
}

}
public static void main(String[] argv) throws IOException {
    Rename.removechar();

}

}

谢谢

问题出在以下几行..

row_read=sheet_read.getRow(rowNum);
row_write = sheet_write.createRow(rowNum);

它需要在单元格循环之外 (for(int cellNum = 0; cellNum<=7; cellNum++))

应该是这样的。

 for (int rowNum = 0; rowNum <= rowCount; rowNum++) {
            row_read = sheet_read.getRow(rowNum);
            row_write = sheet_write.createRow(rowNum);
            for (int cellNum = 0; cellNum <= 7; cellNum++) {
                // Cell cell = null;
String temp =  formatter.formatCellValue(row_read.getCell(cellNum));

您可能还需要将 import static Cell cell; 更改为 import HSSFCell cell;

这里是完整的代码。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataFormatter;

public class Rename {


    static HSSFRow row_read = null;
    static HSSFRow row_write = null;
    static HSSFCell cell;

    static FileOutputStream output = null;
    static HSSFWorkbook workbook_read = null;
    static HSSFWorkbook workbook_write = null;
    static HSSFSheet sheet_read = null;
    static HSSFSheet sheet_write = null;

    public static void removechar() {
        try {
            FileInputStream input = new FileInputStream("D://test_input.xls");
            workbook_read = new HSSFWorkbook(input);
            sheet_read = workbook_read.getSheet("Report");
            workbook_write = new HSSFWorkbook();
            sheet_write = workbook_write.createSheet("Test");
            DataFormatter formatter = new DataFormatter();
            int rowCount = sheet_read.getLastRowNum();
            System.out.println(rowCount);
            for (int rowNum = 0; rowNum <= rowCount; rowNum++) {
                row_read = sheet_read.getRow(rowNum);
                row_write = sheet_write.createRow(rowNum);
                for (int cellNum = 0; cellNum <= 7; cellNum++) {
                    // Cell cell = null;
                    String temp = formatter.formatCellValue(row_read.getCell(cellNum));
                    // System.out.println(temp);
                    String temp1 = temp.replaceAll("\'", "");
                    String temp2 = temp1.replaceAll("\"", "");
                    System.out.println(temp2);
                    cell = row_write.createCell(cellNum);
                    cell.setCellValue(temp2);
                }
            }

            output = new FileOutputStream("D://test_output.xls");
            workbook_write.write(output);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] argv) throws IOException {
        Rename.removechar();
    }
}