使用JavaPOI将巨大的数据2D数组写入excel文件

使用JavaPOI将巨大的数据2D数组写入excel文件,java,excel,multidimensional-array,apache-poi,Java,Excel,Multidimensional Array,Apache Poi,我有一个大约16000 X 16000的二维数组,我想将这些记录导出到excel文件。目前,我可以在短时间内导出多达1000 X1000个二维阵列。但是当我增加数组的大小时,例如3000 X 3000,我的程序会运行很长时间而不返回任何数据。 我请求帮助将整个二维数组导出到excel文件,并使用POI 我的示例代码用于导出数据,其中一个参数是我的2D数组 公共类导出数据{ public static void exportDataToExcel(String fileName, String t

我有一个大约16000 X 16000的二维数组,我想将这些记录导出到excel文件。目前,我可以在短时间内导出多达1000 X1000个二维阵列。但是当我增加数组的大小时,例如3000 X 3000,我的程序会运行很长时间而不返回任何数据。 我请求帮助将整个二维数组导出到excel文件,并使用POI

我的示例代码用于导出数据,其中一个参数是我的2D数组

公共类导出数据{

public static void exportDataToExcel(String fileName, String tabName, int[][] data) throws FileNotFoundException, IOException
  {
    //Create new workbook and tab
      Workbook wb = new XSSFWorkbook();
      FileOutputStream fileOut = new FileOutputStream(fileName);
      Sheet sheet = wb.createSheet(tabName);

      //Create 2D Cell Array
      Row[] row = new Row[data.length];
      Cell[][] cell = new Cell[row.length][];

      //Define and Assign Cell Data from Given
      for(int i = 0; i < row.length; i ++)
      {
          row[i] = sheet.createRow(i);
          cell[i] = new Cell[data[i].length];

          for(int j = 0; j < cell[i].length; j ++)
          {
              cell[i][j] = row[i].createCell(j);
              cell[i][j].setCellValue(data[i][j]);
          }

      }

      //Export Data
      wb.write(fileOut);
      fileOut.close();
      System.out.println("File exported successfully");
  }
public static void exportDataToExcel(字符串文件名、字符串tabName、int[][]数据)抛出FileNotFoundException、IOException
{
//创建新工作簿和选项卡
工作簿wb=新XSSFWorkbook();
FileOutputStream fileOut=新的FileOutputStream(文件名);
Sheet Sheet=wb.createSheet(tabName);
//创建二维单元阵列
行[]行=新行[data.length];
单元格[][]单元格=新单元格[行长度][];
//定义和分配给定数据的单元格数据
for(int i=0;i

}

我看到您的数据是int[]。所以我相信它的计划是静态数据(没有任何excel公式)

那么,为什么不将数据写入CSV文件呢?这是快速+有限制的行数,如在POI限制65000+记录新表


您可以使用

,因为我看到您的数据是int[]。所以我相信它的计划是静态数据(没有任何excel公式)

那么,为什么不将数据写入CSV文件呢?这是快速+有限制的行数,如在POI限制65000+记录新表


您可以使用

,因为我看到您的数据是int[]。所以我相信它的计划是静态数据(没有任何excel公式)

那么,为什么不将数据写入CSV文件呢?这是快速+有限制的行数,如在POI限制65000+记录新表


您可以使用

,因为我看到您的数据是int[]。所以我相信它的计划是静态数据(没有任何excel公式)

那么,为什么不将数据写入CSV文件呢?这是快速+有限制的行数,如在POI限制65000+记录新表


您可以在这里使用csvwriter打印2D阵列的完整示例

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVWriter;

/**
 * @author Girish
 * 
 */
public class CSVWritterExample
{
    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        int[][] data = new int[100][100];

        for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 100; j++)
            {
                data[i][j] = j * i;
            }
        }

        exportDataToExcel("D:/sample.csv", data);
    }

    public static void exportDataToExcel(String fileName, int[][] data) throws FileNotFoundException, IOException
    {
        File file = new File(fileName);
        if (!file.isFile())
            file.createNewFile();

        CSVWriter csvWriter = new CSVWriter(new FileWriter(file));

        int rowCount = data.length;

        for (int i = 0; i < rowCount; i++)
        {
            int columnCount = data[i].length;
            String[] values = new String[columnCount];
            for (int j = 0; j < columnCount; j++)
            {
                values[j] = data[i][j] + "";
            }
            csvWriter.writeNext(values);
        }

        csvWriter.flush();
        csvWriter.close();
    }
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入au.com.bytecode.opencsv.CSVWriter;
/**
*@author Girish
* 
*/
公共类CSVwitterExample
{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException
{
int[][]数据=新int[100][100];
对于(int i=0;i<100;i++)
{
对于(int j=0;j<100;j++)
{
数据[i][j]=j*i;
}
}
exportDataToExcel(“D:/sample.csv”,数据);
}
公共静态void exportDataToExcel(字符串文件名,int[][]数据)引发FileNotFoundException,IOException
{
文件=新文件(文件名);
如果(!file.isFile())
createNewFile();
CSVWriter CSVWriter=新的CSVWriter(新的文件编写器(文件));
int rowCount=data.length;
对于(int i=0;i
这里是使用CSVWritter打印2D阵列的完整示例

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVWriter;

/**
 * @author Girish
 * 
 */
public class CSVWritterExample
{
    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        int[][] data = new int[100][100];

        for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 100; j++)
            {
                data[i][j] = j * i;
            }
        }

        exportDataToExcel("D:/sample.csv", data);
    }

    public static void exportDataToExcel(String fileName, int[][] data) throws FileNotFoundException, IOException
    {
        File file = new File(fileName);
        if (!file.isFile())
            file.createNewFile();

        CSVWriter csvWriter = new CSVWriter(new FileWriter(file));

        int rowCount = data.length;

        for (int i = 0; i < rowCount; i++)
        {
            int columnCount = data[i].length;
            String[] values = new String[columnCount];
            for (int j = 0; j < columnCount; j++)
            {
                values[j] = data[i][j] + "";
            }
            csvWriter.writeNext(values);
        }

        csvWriter.flush();
        csvWriter.close();
    }
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入au.com.bytecode.opencsv.CSVWriter;
/**
*@author Girish
* 
*/
公共类CSVwitterExample
{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException
{
int[][]数据=新int[100][100];
对于(int i=0;i<100;i++)
{
对于(int j=0;j<100;j++)
{
数据[i][j]=j*i;
}
}
exportDataToExcel(“D:/sample.csv”,数据);
}
公共静态void exportDataToExcel(字符串文件名,int[][]数据)引发FileNotFoundException,IOException
{
文件=新文件(文件名);
如果(!file.isFile())
createNewFile();
CSVWriter CSVWriter=新的CSVWriter(新的文件编写器(文件));
int rowCount=data.length;
对于(int i=0;i
这里是使用CSVWritter打印2D阵列的完整示例

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVWriter;

/**
 * @author Girish
 * 
 */
public class CSVWritterExample
{
    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        int[][] data = new int[100][100];

        for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 100; j++)
            {
                data[i][j] = j * i;
            }
        }

        exportDataToExcel("D:/sample.csv", data);
    }

    public static void exportDataToExcel(String fileName, int[][] data) throws FileNotFoundException, IOException
    {
        File file = new File(fileName);
        if (!file.isFile())
            file.createNewFile();

        CSVWriter csvWriter = new CSVWriter(new FileWriter(file));

        int rowCount = data.length;

        for (int i = 0; i < rowCount; i++)
        {
            int columnCount = data[i].length;
            String[] values = new String[columnCount];
            for (int j = 0; j < columnCount; j++)
            {
                values[j] = data[i][j] + "";
            }
            csvWriter.writeNext(values);
        }

        csvWriter.flush();
        csvWriter.close();
    }
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入au.com.bytecode.opencsv.CSVWriter;
/**
*@author Girish
* 
*/
公共类CSVwitterExample
{
公共静态void main(字符串[]args)抛出FileNotFoundException、IOException
{
int[][]数据=新int[100][100];
对于(int i=0;i<100;i++)
{
对于(int j=0;j<100;j++)
{
数据[i][j]=j*i;
}