我想在替换" 和' 后将一个excel(.xls)的全部内容复制到另一个内容中。但是,这段代码创建了一个新的excel,但只复制了最后一列(在我的例子中,它是第7列)。请告知我这个代码出错的地方......
公共类重命名{
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();
}
}
谢谢
答案 0 :(得分:1)
问题在于以下几行......
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();
}
}