Заранее извиняюсь за любые ошибки форматирования / другие ошибки, я все еще новичок ie до Java.
Я провожу анализ экспрессии генов, в котором у меня есть программа, которая печатает ~ 6 миллионов названий генов и их значений экспрессии в 23 000 наборов из 249 (всего 249 пациентов, и у каждого из них 23 000 значений экспрессии генов / генов). Прямо сейчас у меня есть эта программа, перебирающая все 249 отдельных файлов пациентов, получающая 23 000 значений генов и печатающая в текстовый файл (с 6 миллионами строк и 2 столбцами, один столбец для имени гена и один для выражения).
Однако я бы хотел, чтобы эта программа вместо этого печатала в файл Excel, чтобы было 249 строк (для каждого пациента) и 23 000 столбцов (для каждого гена). Я пытался сделать это в течение нескольких дней (с apache POI) и все еще не могу. Я нашел этот пример кода: https://www.scientecheasy.com/2019/01/write-excel-file-in-java.html, который я пытался изменить, чтобы он соответствовал моей программе, но, похоже, ничего не работает. Я включил мою оригинальную программу (которая печатает в текстовый файл, но также включает в себя загруженные файлы POI). Любая помощь будет очень признательна!
import java.io.*;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class CreateExcel {
public static final File folder = new File("C:/Users/menon/OneDrive/Documents/R/TARGET");
private static PrintStream output;
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet1 = wb.createSheet("values");
public static void main(String [] args) throws FileNotFoundException {
output = new PrintStream(new File("final_CSRSEF_data.txt"));
listFilesForFolder(folder);
}
public static double listFilesForFolder(final File folder) throws FileNotFoundException {
double value = 0.0;
//contains names of all the 23k genes in order to loop through the 249 files and collect the needed names each time
File list = new File("C:/Users/menon/OneDrive/Documents/NamesOfGenes.txt");
Scanner names = new Scanner(list);
String data;
while (names.hasNext()) {
String name = names.next();
//looping through all separate 249 patient files in folder and searching for gene name
for (final File fileEntry : folder.listFiles()) {
Scanner files = new Scanner(fileEntry);
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
while (files.hasNextLine()) {
final String lineFromFile = files.nextLine();
if(lineFromFile.contains(name)) {
//System.out.print(name+ " in file " + fileEntry.getName());
String[] thisOne = lineFromFile.split("\\s");
String res = thisOne[0];
//System.out.println(res);
if (res.equals(name)) {
print(lineFromFile);
print("\n");
}
}
}
}
}
print("----------------");
print("\n");
}
return 0.0;
}
//print to final_CSRSEF_data.txt
private static void print(String stat) {
output.print(stat);
}
}
Так что в основном то, что я печатаю перед "---------------" в каждом текстовом файле, должно быть в отдельный столбец (не ряд) в листе Excel.
Еще раз спасибо заранее!