我正在阅读一个用一些分隔符分隔的文本文件。
我的文本文件内容示例
Avc def efg JKSJD
1 2 3 5
3 4 6 0
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<Integer, List<Object>> excelDataHolder = new LinkedHashMap<Integer, List<Object>>();
int rownum = 0;
for (Integer key : keyset) {
Row row = sheet.createRow(rownum++);
List<Object> objList = excelHolder.get(key);//excelHolder is my map
int cellnum = 0;
for (Object obj : objList) {
Cell cell = row.createCell(cellnum++);
cell.setCellValue((Date) obj);
}
}
我将回答有关Java的aspose.cells的问题,因为您也尝试过。
创建或加载一个非常大的Excel文件几乎总是需要很大的内存。即使你一次读单行或多行,你仍然会把内容写到工作簿的实例中,该实例被加载到内存中。
解决方案1(不好而且非常有限):增加堆大小,如果允许的最大堆大小适用于您的最大文件,请选择它。
import com.aspose.cells.*;
import java.util.*;
public class ExcelLargeTextImport
{
private static String excelFile = Common.dataDir + "largedata.xlsx";
public static void main(String args[])
{
try
{
Common.setLicenses();
importToExcel();
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
private static void importToExcel() throws Exception
{
// Process each workbook in a method
for (int sheetCounter=0 ; sheetCounter<10 ; sheetCounter++)
{
saveWorkbook(sheetCounter);
}
}
private static void saveWorkbook(int sheetCounter) throws Exception
{
Workbook workbook = new Workbook();
// Get the first sheet
Worksheet worksheet = workbook.getWorksheets().get(0);
Cells cells = worksheet.getCells();
// Initialize array list with 1 million records
ArrayList<String> lines = new ArrayList<String>();
int rowCount = 1000000;
for (int i=0 ; i<rowCount ; i++)
{
lines.add(i + ";value1;value2;value3");
}
long lineNo = 1;
for (String line : lines)
{
// Split the line by delimeter
String[] values = line.split(";");
// First cell
Cell cell = cells.get("A" + lineNo);
cell.setValue(values[0]);
// Second cell
cell = cells.get("B" + lineNo);
cell.setValue(values[1]);
// Third cell
cell = cells.get("C" + lineNo);
cell.setValue(values[2]);
// Fourth cell
cell = cells.get("D" + lineNo);
cell.setValue(values[2]);
lineNo++;
}
System.out.print(sheetCounter + " ");
// Saving the Excel file
workbook.save(excelFile.replace(".xlsx", sheetCounter + ".xlsx"));
System.out.println("\nExcel file created");
}
}
问题内容: 我正在从Google文档中提取数据,进行处理,然后将其写入文件(最终我将其粘贴到Wordpress页面中)。 它具有一些非ASCII符号。如何将这些安全地转换为可以在HTML源代码中使用的符号? 目前,我正在将所有内容都转换为,将它们全部合并为Python字符串,然后执行以下操作: 最后一行存在编码错误: 编解码器无法解码位置12286的字节:序数不在范围内(128) 部分解决方案:
我写了一个函数,允许我从剪贴板中获取四列数据,拆分它,添加一列额外的列,重新组合它,并将其导出为文本文件。 我有两个问题:- 是否可以创建一个文件,其中包含我使用此函数创建的表,以便将该表粘贴到某些文本的中间? 邪恶的笑(Evil Grin的缩写) 其次,我试图修改函数,使其将一个文件名作为变量;即< code>xyztoinp 等等……但这并没有产生带有新文件名的输出;有人知道这是怎么做到的吗?
档案员。txt包含两类员工的详细信息,即月薪和小时津贴。如果是月薪员工,则该文件包含名字、姓氏、性别、职级、类型和基本工资,如果是小时薪员工,则包含小时工资和工作小时数。该文件的示例如下所示: 约翰·史密斯M经理每月45000.00 Sunil Bates M高级每小时700.00 45 梁爱娃F警官每月30500.00 我要写一个程序,会看每个员工,计算奖金占基本工资的百分比,对于一个按小时计酬
问题内容: 我正在尝试将大的ResulSet(〜1mm行)写入单个文件。在Java 1.6中,有没有一种首选/有效的方法来做到这一点? 问题答案: 这取决于所使用的JDBC驱动程序。您需要指示JDBC驱动程序 不要事先将其全部加载到Java内存中,而应在每次调用时逐行加载。然后,在循环内部,您需要 立即 将数据写入文件,而不是将其保存在文件中。 不清楚您使用的是哪种JDBC驱动程序,但是例如,可以
我正在制作一个应用程序,它处理存储在文本文件中的大量数据。本质上,应用程序浏览一个. txt文件,一旦找到,应用程序需要把文件中的所有数据放入JTable,然后我需要对数据执行一些过滤操作,然后将其导出。. txt文件中的数据格式如下: 有数千行。每行由双类型数字组成(A、B……均为1.3、2.0等) 我通过手动添加数组中的所有列名,然后将表的模型设置为 我已经把行作为'空'在这里,因为我不知道我
问题内容: 如何将大数据文件分块写入CSV文件? 我有一组大型数据文件(1M行x 20列)。但是,我只关注该数据的5列左右。 我想通过只用感兴趣的列制作这些文件的副本来使事情变得更容易,所以我可以使用较小的文件进行后期处理。因此,我计划将文件读取到数据帧中,然后写入csv文件。 我一直在研究将大数据文件以块的形式读入数据框。但是,我还无法找到有关如何将数据分块写入csv文件的任何信息。 这是我现在