Избегайте предупреждения «Число, сохраненное как текст» в Excel с использованием Apache POI при написании числовых строкJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Избегайте предупреждения «Число, сохраненное как текст» в Excel с использованием Apache POI при написании числовых строк

Сообщение Anonymous »

Я работаю над проектом Java, в котором мне нужно создать файл Excel с использованием Apache POI. Один из столбцов файла Excel содержит номера счетов, которые являются числовыми, но их необходимо сохранить в виде текста (строки) на листе Excel. Однако, когда файл открывается в Excel, для этих ячеек отображается предупреждение: «Число, сохраненное в виде текста».
Что я пробовал:
1.Я использовал DataFormat в Apache POI, чтобы установить текстовый формат ячейки (@).
2.Я также пробовал различные обходные пути, например, добавлять к значениям префикс одинарной кавычки ('), но это делает одинарную кавычку видимой в Excel, что Я не хочу.
3.Я попробовал явно задать текстовый стиль ячейки и подтвердил, что значения записываются в виде строк, но предупреждение не исчезло.
Ожидаемый результат:
1.Номера учетных записей должны оставаться строками (не фактическими). числа) в файле Excel.
2. Excel не должен отображать какие-либо предупреждения, такие как «Число, сохраненное в виде текста», при открытии файла.
код:
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();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... writing-nu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»