基于列从Java打印到Excel文件
对于任何格式/其他错误,请提前道歉,我仍然是Java的新手 我正在进行基因表达分析,其中我有一个程序,在23000组249名患者中打印出约600万个基因名称及其表达值(总共有249名患者,每个患者都有23000个基因/基因表达值)。现在,我让这个程序遍历所有249个个体患者文件,获得23000个基因值,并打印到一个文本文件(有600万行和2列,一列表示基因名,一列表示表达式)基于列从Java打印到Excel文件,java,excel,apache-poi,Java,Excel,Apache Poi,对于任何格式/其他错误,请提前道歉,我仍然是Java的新手 我正在进行基因表达分析,其中我有一个程序,在23000组249名患者中打印出约600万个基因名称及其表达值(总共有249名患者,每个患者都有23000个基因/基因表达值)。现在,我让这个程序遍历所有249个个体患者文件,获得23000个基因值,并打印到一个文本文件(有600万行和2列,一列表示基因名,一列表示表达式) 但是,我希望这个程序打印到excel文件,这样就有249行(每个患者)和23000列(每个基因)。我已经尝试了几天(使用
但是,我希望这个程序打印到excel文件,这样就有249行(每个患者)和23000列(每个基因)。我已经尝试了几天(使用ApachePOI)来实现这一点,但仍然无法实现。我找到了这个示例代码:,这是我一直试图修改以适合我的程序的代码,但似乎没有任何效果。我已经包括了我的原始程序(打印到文本文件,但也包括我下载的POI JAR)。任何帮助都将不胜感激
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工作表中的单独列(而不是行)中
再一次,提前谢谢你 看看这个:
www.pela.it,在我的主页上有一个下载“基因表达”工具的链接
两年前我用java做的,如果这是你想要做的,我很乐意帮助你
它详细说明了从pcr工具输出的xml原始数据,并最终打印了包含所有详细说明阶段的分页excel。还有一个ppt详细解释。“我希望这个程序打印到excel文件,这样就有249行(每个患者)和23000列(每个基因)。”不可能。即使是最新的
Excel
版本也最多只提供16384列。请参阅:“工作表上的行和列总数:1048576行乘以16384列”。Alex是对的,可能有重新排列输出的选项,例如保存23000行和249列columns@edwigz好的,谢谢你的回复。有没有办法将其拆分并保存在多个文件中?您好,谢谢您的回复!我查看了您的工具,它看起来很棒,但不幸的是,我不确定它是否对我有多大用处,因为我正在用R进行实际分析,我使用Java只是为了合并数据集,并将所有600万个值合并在一起。我真的很感激你对如何做到这一点的任何建议。非常感谢。你好,安基塔,我可以给你我的java代码生成excel,给我一个电子邮件地址。或者,如果您愿意向我发送源数据,我将尝试为其编写特定的代码。祝你今天愉快:)