Vermeiden Sie die Warnung „Zahl als Text gespeichert“ in Excel mithilfe von Apache POI beim Schreiben numerischer ZeicheJava

Java-Forum
Anonymous
 Vermeiden Sie die Warnung „Zahl als Text gespeichert“ in Excel mithilfe von Apache POI beim Schreiben numerischer Zeiche

Post by Anonymous »

Ich arbeite an einem Java-Projekt, bei dem ich mit Apache POI eine Excel-Datei generieren muss. Eine der Spalten in der Excel-Datei enthält Kontonummern, die numerisch sind, aber als Text (Zeichenfolge) in der Excel-Tabelle gespeichert werden müssen. Wenn die Datei jedoch in Excel geöffnet wird, wird für diese Zellen eine Warnung angezeigt: „Zahl als Text gespeichert“.
Was ich versucht habe:
1.Ich habe das verwendet DataFormat-Klasse in Apache POI, um das Zellenformat auf Text (@) festzulegen.
2. Ich habe auch verschiedene Problemumgehungen versucht, z. B. den Werten ein einfaches Anführungszeichen (') voranzustellen, aber dadurch wird das einfache Anführungszeichen in Excel sichtbar, was Ich will nicht.
3.Ich habe es versucht Der Zellenstil wurde explizit auf Text festgelegt und bestätigt, dass die Werte als Zeichenfolgen geschrieben werden. Die Warnung bleibt jedoch bestehen.
Erwartetes Ergebnis:
1. Die Kontonummern sollten als Zeichenfolgen (keine tatsächlichen Zahlen) in der Excel-Datei verbleiben .
2.Excel sollte beim Öffnen der Datei keine Warnungen wie „Nummer als Text gespeichert“ anzeigen.
Code:
public class ExcelWriter {

public static void main(String[] args) {
// Define the file name
String fileName = "EmployeeDetails.xlsx";

// Create a Workbook
Workbook workbook = new XSSFWorkbook();

// Create a Sheet
Sheet sheet = workbook.createSheet("Employee Data");

// Define header titles
String[] headers = {"Serial Number", "Employee Name", "Account Number", "Number"};

// Create header row
Row headerRow = sheet.createRow(0);
CellStyle headerStyle = workbook.createCellStyle();
// ...existing code...

// Create a CellStyle for text format
CellStyle textStyle = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
textStyle.setDataFormat(format.getFormat("@"));

// Sample data
Object[][] data = {
{1, "John Doe", "123456789", 1000},
{2, "Jane Smith", "987654321", 2000}
};

// Fill data
int rowNum = 1;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
for (int colNum = 0; colNum < rowData.length; colNum++) {
Cell cell = row.createCell(colNum);
if (colNum == 2) { // Account Number column
cell.setCellStyle(textStyle);
cell.setCellValue(rowData[colNum].toString());
} else {
if (rowData[colNum] instanceof String) {
cell.setCellValue((String) rowData[colNum]);
} else if (rowData[colNum] instanceof Integer) {
cell.setCellValue((Integer) rowData[colNum]);
}
}
}
}

// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream(fileName)) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post