基于列从Java打印到Excel文件

基于列从Java打印到Excel文件,java,excel,apache-poi,Java,Excel,Apache Poi,对于任何格式/其他错误,请提前道歉,我仍然是Java的新手 我正在进行基因表达分析,其中我有一个程序,在23000组249名患者中打印出约600万个基因名称及其表达值(总共有249名患者,每个患者都有23000个基因/基因表达值)。现在,我让这个程序遍历所有249个个体患者文件,获得23000个基因值,并打印到一个文本文件(有600万行和2列,一列表示基因名,一列表示表达式) 但是,我希望这个程序打印到excel文件,这样就有249行(每个患者)和23000列(每个基因)。我已经尝试了几天(使用

对于任何格式/其他错误,请提前道歉,我仍然是Java的新手

我正在进行基因表达分析,其中我有一个程序,在23000组249名患者中打印出约600万个基因名称及其表达值(总共有249名患者,每个患者都有23000个基因/基因表达值)。现在,我让这个程序遍历所有249个个体患者文件,获得23000个基因值,并打印到一个文本文件(有600万行和2列,一列表示基因名,一列表示表达式)


但是,我希望这个程序打印到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,给我一个电子邮件地址。或者,如果您愿意向我发送源数据,我将尝试为其编写特定的代码。祝你今天愉快:)