用FileInputStream就能读取任何格式的文件。可以复制文件。
但是如果你想通过自己写的程序处理文件里的内容是不现实的,因为每种文件都有设计者设计好的格式。
2. C#读取大数据量Excel,60W行数据,该怎么处理
用系统的函数 别自己循环~
将工作表Sheet1的内专容读取到DataSet
属string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0'";
DataSet ds = new DataSet();
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
oada.Fill(ds);
3. 如何把大量数据导入EXCEL
1。用word打开txt文件
2。ctrl+h 将空格替换为段落标记(^p),注意连续空格的处理。
3。保存为txt文件
4。excel中,按你上面方法导入。
4. 您好,请问我想逐行的读取excel表格中的数据该怎么做呢
MATLAB提供读取excel文件的系统函数xlsread,其主要的调用形式为:a=xlsread('filename.xls'),其中a表示读入文件所保存的变量名称,filename.xls(或者filename.xlsx)表示excel数据文件名。然后对a进行操作即可。
5. 如何利用excel读取xml大数据文件
给你一种抄jsp的方法 在JSP中如何把xml文件中的数据导出到excel中,其实就是通过Java如何把xml中的数据导出到excel中。 要解决这个问题分为两步。 第一步,通过java把数据从xml文件中读出来。
6. EXCEL表格数据太大运行很卡,怎样处理
解决办法如下:抄
1、首先,单击计算机左下角的[开始]按钮找到[所有程序]选项,如下图所示,然后进入下一步。
7. QT 如何读取大数据量的Excel文件
貌似Excel最多只有1048576行,你这150万行我不知道是怎么放到一个表里面的。
数据100多玩行你可以将数据存放在Access或者其他的数据库中或许会比较好一点。
8. 实时生成并下载大数据量的EXCEL文件,用PHP如何实现
对于任何一个网站肯定是少不了下载功能,常见的下载功能有图片、视频、Excel表格,如果文件比较小的话,那么不会遇到任何的问题,但是当文件信息而超明银过了PHP的最大内存,那么在这个时候它就会有的内存溢出的问题。
那么它们是因为什么而发生的?对于这个过程的原理才是埋碧我们应该真正要去弄明白的事情
下载大数据量的EXCEL文件为何要报错?
PHP在下载大Excel表格的时候,那么首先它是需要去把MySQL的数据从硬盘上面读取到内存,但读取它是一次性载入到我们的内存,如果说它一次性载入的数据量远远大于最大内存,然后再来执行浏览器的业务下载。那么这个时候它就会发生我们这个内存溢出。
就比如:说我们现在有100M的数据量,但是我们PHP内存最大只有64M,那么这个它肯定是装不了的,我们可以把那个内存比喻为一个水杯,这个水杯的容量比喻为内存,现在杯子最大容量为64L。你要存放100L。肯定放不下
大事化小,小事化了。拆分成段
从上面可以看到文件下载,它是分为两步,首先是载入内存然后执行浏览器的输出下载,那么既然大型文件一次性载入不了,那可以采用“大事化小,小事化了”思路,我们可以实现边写边下载,也激液宴就是分批次的读取与写入。
因为用户的话,只要最终拿到这个文件就可以,对于浏览器的下载原理不需要关心。只需要给到文件下载提示给用户即可,然后后端在实时的分批次的写入到要下载的文件当中。
实现思路步骤:
1、一设置浏览器下载Excel需要的Header
2、打开php://output流,并设置写入文件句柄。
注:(php://output,是一个可写的输出流,允许程序像操作文件一样将输出写入到输出流中,PHP会把输出流中的内容发送给web服务器并返回给发起请求的浏览器)
3、获取数据库所有数据量,并设置每次查询的条数,通过这两个值计算分批查询的次数
4、基于分批查询的次数循环查询数据库,然后写入到文件中,同时清除本次操作变量内存,刷新缓冲到浏览器,让浏览器的文件始终实时保持到最新的大小
注:刷新用ob_flush、flush()PHP的I/O流
在这里我们用到了PHP的一个IO的输入输出,也就是我们常用的
php://inputphp://output。php://input
php://input可以读取原始的POST数据。相较于$form-data”.
注:p>php://output是一个只写的数据流,允许你以print和echo一样的方式写入到输出缓冲区。
综上:实现思维与原理很重要如有感悟,欢迎在线咨询
9. java怎么读取很大的excel(20w条数据),怎么通过字节流获取到单元格的内容
使用java poi
package webservice;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExcelController {
@SuppressWarnings("deprecation")
public void excel() throws FileNotFoundException, IOException{
String filename = "d:\\excel.xls";
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
//按名引用excel工作表
// HSSFSheet sheet = workbook.getSheet("JSP");
//也可以用以下方式来获取excel的工作表,采用工作表的索引值
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row ;
HSSFCell cell1;
int rows=sheet.getLastRowNum();
for(int icount=0;icount<rows;icount++){
row = sheet.getRow(icount);
int line=row.getPhysicalNumberOfCells();
for(int j=0;j<line;j++){
cell1= row.getCell(j);
System.out.println(cell1+"--"+icount+"---"+j);
}
}
//打印读取值
// System.out.println(cell.getStringCellValue());
//新建一输出流
FileOutputStream fout = new FileOutputStream(filename); //PS:filename 是你另存为的路径,不处理直接写入模版文件
//存盘
workbook.write(fout);
fout.flush();
//结束关闭
fout.close();
}
public HSSFCell getCell(HSSFRow row, int index) {
// 取得分发日期单元格
HSSFCell cell = row.getCell(index);
// 如果单元格不存在
if (cell == null) {
// 创建单元格
cell = row.createCell(index);
}
// 返回单元格
return cell;
}
public static void main(String[] args) {
ExcelController ec = new ExcelController();
try {
ec.excel();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
10. excel太大,运行缓慢该怎么办
Excel文件太大的话,肯定会导致运行缓慢,但是可以使用以下方法提高和改善:
一、首先要合理设计数据的布局,这是计算效率得到保障的前提
由于Excel引用访问本工作表、不同工作簿或工作表数据的速度是有区别的,通常计算指向其他工作表的引用比计算工作表内的引用速度要慢。当数据计算量较大时,就必须考虑数据的整体布局:数据是分工作簿保存、分工作表保存,还是保存在同一工作表。
基于整体性原则,如果是清单型数据表格,可能的话,尽量将数据整合同一工作表,至少尽量在同一工作簿。如果不能整合在同一工作簿,宁愿使用少量的大型工作簿,也不要使用数量较多的小型工作簿。尽可能地避免工作簿间的链接,对外部工作簿进行链接,既影响表格的打开速度,并且当工作簿移动或删除时,还容易出现断链,不易于查找和修复。
二、不可避免引用其他工作簿时的提速技巧
对关闭的工作簿尽量使用简单的直接单元格引用。这样做可以避免在重新计算任何工作簿时重新计算所有链接的工作簿。
如果不能避免使用链接的工作簿,最好将它们全部打开而不是关闭,并且表格打开顺序也有讲究,要首先打开要链接到的工作簿,然后再打开包含链接的工作簿。一般来说,从打开的工作簿比从关闭的工作簿中读取链接的速度要快。
进一步提速的“断舍离”大法:
断:数据量大的表格,应将已经计算出结果且不会再更新的单元格的公式计算结果采用选择性粘贴方式转化为数值,以减少计算量;
舍:尽量不要大范围使用计算量大的功能或公式。比如:尽管条件格式和数据有效性的功能非常强大,数组公式运算功能也非常强大,但是,大量使用它们会明显降低计算速度,除非你愿意忍受蜗牛般的运算速度,否则,不要大范围使用数据有效性、条件格式和数组公式;
离:如果某张工作表需要进行大量运算,且其他工作表对它的引用较少,可考虑将其移出本工作簿。以免每次重新计算时,影响工作簿的整体计算速度。
三、原始数据要规范
原始数据一定的规范,否则,还要使用函数公式清洗不规范的数据,徒增中间环节,影响计算速度。比如数据的来源不是手工输入,而是从其他系统导出,导出的数据可能并不规范,比如数字是文本格式、数字后有空格、不可见字符,这些数据就没法直接参与运算,如果不手工整理成规范数据,还得用函数公式进行规避,这就大大影响计算速度。
四、要关注公式函数的计算效率,尽量使用效率高的函数,或使用其他功能代替。
1.非必要的情况下,不使用可变函数(易失性函数)。
Excel的可变函数有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和INFO。可变函数有个特点,当数值发生变化时,每次都要重新计算,因而会影响表格的计算性能。
比如,我们常用的下面的公式来定义动态区域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
它的好处是:会自动扩展以包含新条目,但表格的计算性能会降低,这是因为OFFSET是可变函数,并且由于OFFSET中的COUNTA函数必须检查很多行,计算效率较低。
一般情况下,我们可以使用Excel的表格功能来代替动态区域(Excel2003中称为列表)。
2.使用其他行和列计算并存储中间结果一次,以便在其他公式中重复使用它们。并且,如前所述,尽可能引用其他单元格已有的计算结果,这样可提高运算效率。
11.png(13.93KB,下载次数:4)
下载附件保存到相册
2015-1-2422:57上传
在C2单元格输入公式:
=SUM($A$2:$A2)
然后向下填充公式到C2000。如上图。B列的公式是上一累加结果加上本行数字。B列的公式是引用了上一行单元格的计算结果,B列公式比C列公式单元格引用总数减少了500倍,计算量大大减少。
3.减少每个公式中的引用数,最大程度地减少函数中的引用单元格范围。
尽管在Excel2007以后的版本中,数组公式可以处理整列引用,但是这会强制计算列中的所有单元格,包括空单元格。这样会使表格计算起来很缓慢。
4.尽可能使用最有效的函数(一般情况下自定义函数慢于Excel中的内置函数),编制适当的公式,尽可能减少公式的计算次数
=IF(ISERROR(VLOOKUP("龙逸凡",$A$2:$C$1000,3,0)),"查无此人",VLOOKUP("龙逸凡",$A$2:$C$1000,3,0))
如果表格A2:A1000中有“龙逸凡”,使用上面这个公式,则Excel要运算VLOOKUP函数两次。Excel2007以后的版本中,可以使用IFERROR来减少运算的次数:
=IFERROR(VLOOKUP("龙逸凡",$A$2:$C$1000,3,0),"查无此人")
五、非必要的情况下不使用会触发重新计算的操作
以下操作会触发重新计算:
1.在自动模式下单:击行或列分隔符。
2.在工作表中插入或删除行、列或单元格。
3.添加、更改或删除已定义名称。
4.在自动模式下重命名工作表或更改工作表位置。
5.在表格中使用筛选、隐藏或取消隐藏行。
6.在自动模式下打开工作簿。如果工作簿上次由不同版本的Excel计算,则打开工作簿通常导致完整计算。
7.选中了“保存前自动重算”选项的情况下在手动模式下保存工作簿。
六、可能的情况下先对数据进行排序,再使用查找引用。尽可能避免对未排序数据执行查找,因为速度很慢。
1.如果使用完全匹配选项,则函数的计算时间与找到匹配项之前扫描的单元格数成比例。对于在较大区域内执行的查找,此时间可能非常长。对排序数据使用VLOOKUP、HLOOKUP和MATCH的近似匹配选项的查找时间很短,并且不会根据所查找的区域长度显著增加。
2.因为完全匹配查找可能很慢,所以应该考虑使用以下可以提高性能的方法:
Ø使用一张工作表。使查找和数据位于同一工作表中运行速度更快。
Ø如果可以,请首先对数据进行排序,并使用近似匹配。
Ø如果必须使用完全匹配查找,请将要扫描的单元格区域限制在最小范围内。使用动态区域名称或表格(列表)功能,而不是引用大量行或列。
七、做到了前面四点,表格的运算速度还是很慢时,将Excel的计算模式改为手动计算,在需要时再重新计算。
在手动计算模式下,可以通过按【F9】触发智能重新计算。使用【Shift+F9】仅重新计算所选工作表,按【Ctrl+Alt+F9】强制对所有公式执行完整计算,也可以通过按【Ctrl+Shift+Alt+F9】强制彻底重新构建依赖项和执行完整计算。
F9计算所有打开的工作簿中的所有工作表。
按Shift+F9可计算活动工作表。
按Ctrl+Alt+F9可计算所有打开的工作簿中的所有工作表,不管它们自上次计算以来是否已更改。
如果按Ctrl+Alt+Shift+F9,则会重新检查相关公式,然后计算所有打开的工作簿中的所有单元格,其中包括未标记为需要计算的单元格。