当前位置:文档之家› 使用CSV导入Oracle Form

使用CSV导入Oracle Form

使用CSV导入Oracle Form
使用CSV导入Oracle Form

使用CSV、TSV或TXT檔案上傳至FORM方法:

我想在從事Oracle EBS客製的各位應該多少都有碰到User提出是否可以用EXCEL匯入資料。當然除了Oracle Web ADI功能外,另外就是使用下述方法搭配標準檔案上傳到Server在讀取組成二維陣列資料,塞到對應的畫面欄位。因此我在網路上找到了一些資料,稍作修改做了一個共用程式給各位參考!!

一、步驟:

1.先將FILE_UPLOAD、LOAD_FILE與CLEAR_FND_LOB建立至FORM的程式單元中。<備註一>

2.新增按鈕觸發執行。執行內容範例如下:

3.新增參數:FLE_FILE_NAME、FLE_GFM_ID紀錄上傳檔案ID與名稱。

4.即可執行將檔案上傳至FORM。

(1)按下執行按鈕則會跳出網頁視窗選取欲上傳之檔案。

(2)選好上傳檔案後點選Submit上傳,則會顯示是否成功。

(3)成功後關閉網頁。點選確認已上傳則開始將檔案複製到FORM中。

(4)導入過程中,在畫面左下角會顯示導入內容且畫面也會持續更新內容。

(5)完全執行完畢後會顯示導入筆數。

二、注意事項:

1.上傳檔案只能是.TXT或.CSV或.TSV且編碼必須為UTF8或ZHT16BIG5否則會失敗。

2.檔案抬頭欄位必須保留且名稱必須與複製BLOCK.ITEM名稱相同。(若欲不同則需修改LOAD_FILE 判斷抬頭名稱是否與設定欄位相同)

3.每一列資料皆要設定欄位區隔與換行符號。如下圖欄位區隔為Tab換行區隔為;(可自訂但決定後不可改變)

4.注意若有”上引號時,用EXCEL另存CSV或TSV或TXT檔案時判斷會有問題。需先將”改為其他符號另存新檔後在取替代回”。

5.此公用程式只判斷欄位抬頭欄位名稱是否與設定相同未判斷各欄位資料內容是否符合格式做卡關。若需要可自行在LOAD_FILE中自行加入。可在下圖copy前加入卡關!!

6.在導入之BLOCK Trigger(ON-ERROR)或關閉FORM時,最好再次呼叫CLEAR_FND_LOB以確保上傳檔案確實刪除避免無用檔案上傳造成伺服器負擔。<備註二>

<備註一> 共用程式FILE_UPLOAD、LOAD_FILE與CLEAR_FND_LOB如下:

PROCEDURE LOAD_FILE (V_BLOCK V ARCHAR2

, V_FIELD V ARCHAR2

, V_COL_SEPARATE V ARCHAR2

, V_ROW_SEPARATE V ARCHAR2

) IS

FLE_GFM_ID NUMBER;

V_FILE V ARCHAR2 (1000);

V_ROW_SEP V ARCHAR2 (10);

V_COL_SEP V ARCHAR2 (10);

V_COMMA_EXIST BOOLEAN := FALSE;

MY_FIELD DBMS_UTILITY.UNCL_ARRAY;

MY_FIELD_CNT BINARY_INTEGER;

MY_FIELD_LOC BINARY_INTEGER := 1;

I NUMBER;

FILE_LEN NUMBER;

FILE_LOC NUMBER; -- File location

TEMP_DATA V ARCHAR2 (10000);

TEMP_TAB V ARCHAR2 (10000);

ENTER_LOC NUMBER; -- ENTER_KEY location on temp buffer

TAB_LOC NUMBER; -- TAB_KEY location on temp buffer

TAB_LOC_OLD NUMBER; -- TAB_KEY location on temp buffer

COUNTER NUMBER := 0;

CONTROL_LANGUAGE NUMBER;

V_PERIOD V ARCHAR2 (20);

V_DATE DATE;

V_DATE_NAME V ARCHAR2 (20);

V_MESG_LEVEL V ARCHAR2 (10);

BEGIN

--用,號分開欄位ex: 'XYZ' To 'X,Y,Z'

DBMS_https://www.doczj.com/doc/4017472470.html,MA_TO_TABLE (V_FIELD, MY_FIELD_CNT, MY_FIELD);

--檢查設定欄位是否存在

FOR I IN 1 .. MY_FIELD_CNT LOOP

MY_FIELD (I) := LTRIM ( RTRIM (MY_FIELD (I)));

DECLARE

ITEM_ID ITEM;

BEGIN

ITEM_ID := FIND_ITEM (V_BLOCK || '.' || MY_FIELD (I));

IF ID_NULL (ITEM_ID) THEN

FND_MESSAGE.DEBUG ('欄位: ' || V_BLOCK || '.' || MY_FIELD (I) || ' 不存在!!');

CLEAR_FND_LOB; --發現設定欄位不合則刪除上傳檔案

RAISE FORM_TRIGGER_FAILURE;

END IF;

END;

END LOOP;

--FND_MESSAGE.DEBUG('欄位個數: '||MY_FIELD_CNT);

-- 判斷欄位區隔符號

IF UPPER (V_COL_SEPARATE) = '' THEN

V_COL_SEP := CHR (09);

ELSIF UPPER (V_COL_SEPARATE) <> 'NULL' THEN

V_COL_SEP := V_COL_SEPARATE;

ELSE

V_COL_SEP := CHR (0);

END IF;

--FND_MESSAGE.DEBUG('V_COL_SEPARATE : '||V_COL_SEPARATE);

-- 判斷行數區隔符號

IF UPPER (V_ROW_SEPARATE) = '' THEN

V_ROW_SEP := CHR (13);

ELSIF UPPER (V_ROW_SEPARATE) <> 'NULL' THEN

V_ROW_SEP := V_ROW_SEPARATE;

ELSE

V_ROW_SEP := CHR (0);

END IF;

--FND_MESSAGE.DEBUG('V_ROW_SEPARATE : '||V_ROW_SEPARATE); -- 開啟檔案

FLE_GFM_ID := :PARAMETER.FLE_GFM_ID;

--FND_MESSAGE.DEBUG('FILE_ID : '||FLE_GFM_ID);

IF FLE_GFM_ID > 0 THEN

-- Get file length

SELECT DBMS_LOB.GETLENGTH (FILE_DATA)

INTO FILE_LEN

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

--FND_MESSAGE.DEBUG('資料讀取名稱: '||FILE_LEN);

GO_BLOCK (V_BLOCK);

CLEAR_BLOCK (NO_V ALIDATE); --視需要可不清除

-- Select data

FILE_LOC := 1;

ENTER_LOC := 1;

LOOP

-- Find enter key location

SELECT DBMS_LOB.INSTR (FILE_DATA

, UTL_RAW.CAST_TO_RAW (V_ROW_SEP)

, FILE_LOC

, 1

)

INTO ENTER_LOC

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

--FND_MESSAGE.DEBUG('ENTER_LOC : '||ENTER_LOC);

BEGIN

SELECT DECODE (LANGUAGE, 'US', 1, 2)

INTO CONTROL_LANGUAGE

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

EXCEPTION

WHEN NO_DATA_FOUND THEN

CONTROL_LANGUAGE := 2;

END;

--FND_MESSAGE.DEBUG('CONTROL_LANGUAGE : '||CONTROL_LANGUAGE);

IF ENTER_LOC > 0 THEN

IF CONTROL_LANGUAGE = 1 THEN

SELECT UTL_RAW.CONVERT (DBMS_LOB.SUBSTR (FILE_DATA, ENTER_LOC - FILE_LOC, FILE_LOC)

, 'AMERICAN_AMERICA.UTF8'

, 'AMERICAN_AMERICA.ZHT16BIG5'

)

INTO TEMP_DATA

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

--FND_MESSAGE.DEBUG('TEMP_DATA : '||TEMP_DATA);

ELSE

SELECT DBMS_LOB.SUBSTR (FILE_DATA, ENTER_LOC - FILE_LOC, FILE_LOC)

INTO TEMP_DATA

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

END IF;

-- TEMP_DATA := LTRIM (RTRIM (UTL_RAW.CAST_TO_V ARCHAR2 (TEMP_DATA)));

FILE_LOC := ENTER_LOC + 2;

ENTER_LOC := ENTER_LOC + 2;

ELSE

IF CONTROL_LANGUAGE = 1 THEN

SELECT UTL_RAW.CONVERT (DBMS_LOB.SUBSTR (FILE_DATA, 1000, FILE_LOC)

, 'AMERICAN_AMERICA.UTF8'

, 'AMERICAN_AMERICA.ZHT16BIG5'

)

INTO TEMP_DATA

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

ELSE

SELECT DBMS_LOB.SUBSTR (FILE_DATA, 1000, FILE_LOC)

INTO TEMP_DATA

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

END IF;

FILE_LOC := FILE_LEN + 2;

END IF;

--FND_MESSAGE.DEBUG('TEMP_DATA : '||TEMP_DATA);

TEMP_DATA := LTRIM (RTRIM (UTL_RAW.CAST_TO_V ARCHAR2 (TEMP_DATA)));

TAB_LOC := 1;

TAB_LOC_OLD := 1;

MY_FIELD_LOC := 1;

--FND_MESSAGE.DEBUG('COUNTER : '||COUNTER); --第n筆

--FND_MESSAGE.DEBUG('TEMP_DATA : '||TEMP_DATA);

IF COUNTER >0 THEN --第0行為抬頭標題不做insert

WHILE (MY_FIELD_LOC <= MY_FIELD_CNT AND TAB_LOC > 0)

LOOP

TAB_LOC := INSTR (TEMP_DATA, V_COL_SEP, TAB_LOC_OLD);

IF TAB_LOC > 0 THEN

TEMP_TAB := REGEXP_REPLACE(SUBSTR (TEMP_DATA, TAB_LOC_OLD, TAB_LOC - TAB_LOC_OLD),chr(10),''); --去除空行

ELSE

TEMP_TAB := REGEXP_REPLACE(SUBSTR (TEMP_DATA, TAB_LOC_OLD),chr(10),''); --去除空行

END IF;

SYNCHRONIZE; --更新畫面欄位資料若速度過慢可拿除

TAB_LOC_OLD := TAB_LOC + 1;

--Start 該作業特別新增檢查

IF V_BLOCK || '.' || MY_FIELD (MY_FIELD_LOC) IN ('TG_IMPORT_ITEM_TEMP.RECEIVING_ROUTING_ID','TG_IMPORT_ITEM_TEMP.ATTRIBUTE3',

'TG_IMPORT_ITEM_TEMP.SEGMENT1','TG_IMPORT_ITEM_TEMP.DESCRIPTION','TG_IMPORT_IT EM_TEMP.PRIMARY_UOM_CODE') THEN --檢查上傳檔案欄位內容

IF TEMP_TAB IS NULL THEN

FND_MESSAGE.SET_STRING('上傳檔案內容錯誤!!'||chr(10)||'請檢查畫面上黃色必輸欄位是否為空!!');

FND_MESSAGE.SHOW;

CLEAR_FND_LOB;

RAISE FORM_TRIGGER_FAILURE;

END IF;

END IF;

-- End 該作業特別新增檢查

COPY (TEMP_TAB, V_BLOCK || '.' || MY_FIELD (MY_FIELD_LOC));

FND_MESSAGE.SET_STRING('資料導入中... 請勿關閉視窗!!第'||COUNTER||' 筆- '||TEMP_TAB || '導入成功!!');

FND_MESSAGE.HINT;

MY_FIELD_LOC := MY_FIELD_LOC + 1;

END LOOP;

NEXT_RECORD;

ELSE --檢查抬頭欄位名稱是否和設定相同

WHILE (MY_FIELD_LOC <= MY_FIELD_CNT AND TAB_LOC > 0)

LOOP

TAB_LOC := INSTR (TEMP_DATA, V_COL_SEP, TAB_LOC_OLD);

IF TAB_LOC > 0 THEN

TEMP_TAB := SUBSTR (TEMP_DATA, TAB_LOC_OLD, TAB_LOC - TAB_LOC_OLD);

ELSE

TEMP_TAB := SUBSTR (TEMP_DATA, TAB_LOC_OLD);

END IF;

TAB_LOC_OLD := TAB_LOC + 1;

IF TEMP_TAB<>MY_FIELD (MY_FIELD_LOC) THEN

FND_MESSAGE.DEBUG(TEMP_TAB||' 欄位與設定欄位'||MY_FIELD (MY_FIELD_LOC)||'不合,請檢查上傳檔案內容!!');

CLEAR_FND_LOB;

RAISE FORM_TRIGGER_FAILURE;

END IF;

MY_FIELD_LOC := MY_FIELD_LOC + 1;

END LOOP;

END IF;

COUNTER := COUNTER + 1;

EXIT WHEN FILE_LOC >= FILE_LEN;

END LOOP;

FIRST_RECORD;

FND_MESSAGE.SET_STRING(''); --執行結束清空左下角訊息

FND_MESSAGE.HINT;

COUNTER :=COUNTER-1;--排除不算抬頭行數

FND_MESSAGE.DEBUG('共導入'||COUNTER||' 筆資料成功!!');

END IF;

----------------

-- Delete temp data

IF FLE_GFM_ID >= 0 THEN

:PARAMETER.FLE_GFM_ID := FLE_GFM_ID;

END IF;

SELECT FILE_NAME

INTO :PARAMETER.FLE_FILE_NAME

FROM FND_LOBS

WHERE 0 = 0

AND FILE_ID = FLE_GFM_ID;

-- Clear LOB File

CLEAR_FND_LOB;

V_MESG_LEVEL := :SYSTEM.MESSAGE_LEVEL;

:SYSTEM.MESSAGE_LEVEL := '5';

:SYSTEM.MESSAGE_LEVEL := V_MESG_LEVEL;

END LOAD_FILE;

PROCEDURE FILE_UPLOAD IS

ACCESS_ID NUMBER;

L_PARAMETERS V ARCHAR2(100);

BUTTON_CHOICE INTEGER;

L_FILE_ID V ARCHAR2(100);

L_GFM_ID INTEGER;

BEGIN

ACCESS_ID := FND_GFM.AUTHORIZE(NULL);

L_PARAMETERS := 'access_id=' || ACCESS_ID;

FND_FUNCTION.EXECUTE(FUNCTION_NAME => 'FND_FNDFLUPL'

,OPEN_FLAG => 'Y'

,SESSION_FLAG => 'Y'

,OTHER_PARAMS => L_PARAMETERS);

FND_MESSAGE.SET_STRING('檔案是否已上傳!?'||CHR(10)||

'請點選"確認"已上傳或"取消"返回畫面');

BUTTON_CHOICE := FND_MESSAGE.QUESTION('確認',NULL,'取消',1,3,'NOTE');

IF (BUTTON_CHOICE = 3) THEN

L_GFM_ID := FND_GFM.GET_FILE_ID(ACCESS_ID);

:PARAMETER.FLE_GFM_ID :=L_GFM_ID;

CLEAR_FND_LOB; --若已上傳則刪除上傳檔

RAISE FORM_TRIGGER_FAILURE;

ELSIF (BUTTON_CHOICE = 1) THEN

L_GFM_ID := FND_GFM.GET_FILE_ID(ACCESS_ID);

:PARAMETER.FLE_GFM_ID :=L_GFM_ID;

END IF;

IF L_GFM_ID IS NULL THEN --檢查是否上傳成功

FND_MESSAGE.DEBUG('檔案上傳不成功,煩請重新上傳!!');

RAISE FORM_TRIGGER_FAILURE;

END IF;

END;

PROCEDURE CLEAR_FND_LOB IS

BEGIN

IF :PARAMETER.FLE_GFM_ID >= 0 THEN

COPY ('5', 'system.message_level');

DELETE FND_LOBS

WHERE 0 = 0

AND FILE_ID = :PARAMETER.FLE_GFM_ID;

https://www.doczj.com/doc/4017472470.html,MIT;

COPY ('0', 'system.message_level');

END IF;

END CLEAR_FND_LOB;

<備註二>

在BLOCK→ON-ERROR加入

DECLARE

V_ERROR_CODE NUMBER;

V_ERROR_TEXT V ARCHAR2 (2000);

V_DBMS_ERROR_CODE NUMBER;

V_DBMS_ERROR_TEXT V ARCHAR2 (2000);

BEGIN

V_ERROR_CODE := ERROR_CODE;

V_ERROR_TEXT := ERROR_TEXT;

V_DBMS_ERROR_CODE := DBMS_ERROR_CODE;

V_DBMS_ERROR_TEXT := DBMS_ERROR_TEXT;

IF V_ERROR_CODE IS NOT NULL THEN

SET_ALERT_PROPERTY('errmes', TITLE, 'Info.'||LTRIM(TO_CHAR(V_ERROR_TEXT)));

SET_ALERT_PROPERTY('errmes', ALERT_MESSAGE_TEXT, V_ERROR_TEXT);

IF :PARAMETER.FLE_GFM_ID >= 0 THEN

CLEAR_FND_LOB;

RAISE FORM_TRIGGER_FAILURE; --若錯誤則刪除檔案後停止

END IF;

END IF;

END;

在FORM→CLOSE_WINDOW加入

IF :PARAMETER.FLE_GFM_ID >= 0 THEN

CLEAR_FND_LOB;

END IF;

APP_CUSTOM.CLOSE_WINDOW(:SYSTEM.EVENT_WINDOW);

C#读取csv、xls、sql数据库的实现

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.Odbc; using System.Data.OleDb; using System.Data.SqlClient; using System.IO; ///

///读取数据并返回数据集 /// public class ReadData { private string filename = null;//文件名 private string filepath = null;//路径 public ReadData() { // // TODO: 在此处添加构造函数逻辑 // } /// ///初始化文件路径 /// ///文件路径 ///文件名称 public ReadData(string cfilepath, string cfilename) { filename = cfilename; filepath = cfilepath; } /// ///读取csv格式文件 /// ///sql语句 /// public DataSet Readcsv(string sqlstr) {

C#写的一个简单的读写CSV文件的类

CSV(Comma-Separated Values )文件即用逗号分隔的文本文件。 下面是用C#写的一个简单的读写CSV文件的类。 using System; using System.Collections.Generic; using System.IO; using System.Text; namespace CSVDemo { ///

/// CSVUtil is a helper class handling csv files. /// public class CSVUtil { private CSVUtil() { } //write a new file, existed file will be overwritten public static void WriteCSV(string filePathName,Listls) { WriteCSV(filePathName,false,ls); } //write a file, existed file will be overwritten if append = false public static void WriteCSV(string filePathName,bool append, List ls) { StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default); foreach(String[] strArr in ls) { fileWriter.WriteLine(String.Join (“,",strArr) ); } fileWriter.Flush(); fileWriter.Close(); } public static List ReadCSV(string filePathName)

把csv文件中的数据导入SQL Server的方法

把csv文件中的数据导入SQL Server的方法? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [sql] --修改高级参数 sp_configure 'show advanced options',1 go --允许即席分布式查询 sp_configure 'Ad Hoc Distributed Queries',1 go --如果配置的值不在合理范围(在最小值最大值范围内),那么可以强制覆盖reconfigure with override go sp_configure 'xp_cmdshell',1 go reconfigure go --创建数据库 create database wc go use wc go --建表 create table xxdd ( aa nvarchar(1000), bb nvarchar(1000), cc nvarchar(1000), dd nvarchar(1000), ee nvarchar(1000), ff nvarchar(1000) ) go

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 /* 这里建立一个c:\wc.csv 文件,内容如下: aa,bb,cc,dd,ee,ff 42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,234324 42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,234324 42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,234324 42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,234324 */ --导出格式文件,这个是关键,数据库名称,表名称,用户名和密码,服务器ip和端口 --都改成你自己的 exec xp_cmdshell 'bcp wc.dbo.xxdd format nul -t "," -f c:\wc.fmt -c -Usa -Pyupei go --先查看要导入的数据 select * from openrowset(bulk 'c:\wc.csv', --要读取的文件路径和名称 formatfile='c:\wc.fmt', --格式化文件的路径和名称 firstrow = 2, --要载入的第一行,由于第一行是标题,所以从 --lastrow = 1000, --要载入的最后一行,此值必须大于firstro maxerrors = 10, --在加载失败之前加载操作中最大的错误数 --errorfile ='c:\wc_error1.txt', --存放错误的文件 rows_per_batch = 10000 --每个批处理导入的行数 ) as t /* aa bb cc dd ee ff 42222222223432432432 32432432432432432432 2332432432 32432432432 32432432 42222222223432432432 32432432432432432432 2332432432 32432432432 32432432 42222222223432432432 32432432432432432432 2332432432 32432432432 32432432 42222222223432432432 32432432432432432432 2332432432 32432432432 32432432 */ --最后可以 insert into 表 (列) select * from openrowset...插入数据即可 insert into xxdd (aa,bb,cc,dd,ee,ff) select * from openrowset(bulk 'c:\wc.csv', --要读取的文件路径和名称 formatfile='c:\wc.fmt', --格式化文件的路径和名称

matlab基本操作,读取csv文件

1、用csvread函数 注意:csvread函数只试用与用逗号分隔的纯数字文件 第一种:M = CSVREAD('FILENAME') ,直接读取csv文件的数据,并返回给M 第二种:M = CSVREAD('FILENAME',R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = CSVREAD('FILENAME',R,C,RNG),其中RNG = [R1 C1 R2 C2],读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。 注意:matlab认为CSV第1行第1列的单元格坐标为(0,0) 给定一个csvlist.csv文件,其内容如下 02, 04, 06, 08, 10, 12 03, 06, 09, 12, 15, 18 05, 10, 15, 20, 25, 30 07, 14, 21, 28, 35, 42 11, 22, 33, 44, 55, 66 例1.1读取整个文件 csvread('csvlist.csv') ans = 2 4 6 8 10 12 3 6 9 12 15 18 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.2读取第2行以下,第0列以右区域的数据 m = csvread('csvlist.dat', 2, 0) m = 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.3读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据 m = csvread('csvlist.dat', 2, 0, [2,0,3,3])

安卓手机数据恢复软件,三星手机恢复数据

我是一个足球迷,平时很喜欢观看各种体育比赛。出了看,我还喜欢存逼死阿德图片,我觉得在赛场上的运动员,是非常阳光的。再加上有自己喜欢的球星,更是要使劲搜藏了。由于我的图片大多来源于手机端的社交媒体平台,所以照片都存放在手机里。不知不觉,手机里有了上千张图片,因为手机内存大,我从来没去管过他,直到这次数据丢失,照片全没了,我才感到后悔。这时候,能不能找回这些图片呢? 漫无目的的在网上闲逛,希望能找到办法,感觉丢失太可惜了。本来没报多大希望,记过顶尖手机数据恢复软件就这样进入了我的视线。 使用方法简单说一下吧:你只用打开软件,然后选择已删除文件恢复功能,再用顶尖软件来进行扫描,看你选择恢复到哪个分区,扫描完成后,就可以进行数据恢复工作了。扫描结果出来后,我们会看到每一个文件的文件名和文件大小,再就是文件的创建时间以及最后访问时间等各种信息,从这些扫描结果,我们可以很快就找到之前不小心被熊孩子清除的文件,文件恢复后还能保持完整性,如果你的手机照片文件不小心丢失,不妨用一下,其他文件格式也是可以恢复的。 当然,除了使用顶尖研发的手机数据恢复软件之外,还有其它的一些办法也可以帮助我们对误删除的照片文件进行恢复。可是其它的方法相比于使用软件来说,却十分之复杂。一般不懂安卓系统的人想要不通过软件来进行安卓手机照片文件的恢复,很容易会把手机给搞坏了,所以还是采用软件好一些。 怎么防止数据丢失 关于防止数据丢失的3个方法: 1.永远不要将你的文件数据保存在操作系统的同一驱动盘上 我们知道大部分文字处理器会将你创建的文件保存在“我的文档”中,然而这恰恰是最不适合保存文件的地方。对于影响操作系统的大部分电脑问题(不管

【免费下载】CSV文件操作

VB6.0 CSV文件操作2008-05-27 18:04 功能:读取CSV文件的内容并导入到数据库中 环境:Access2003 语言:VBA(对于使用VB6.0同样适用) 数据库:D:\db1.mdb 数据表:test userId 数值型 userName 文本型 CSV文件:D:\test.csv (使用Excel打开) 编号姓名 123 王五 456 李"“四 789 张'三 注意,在实际处理CSV文件前,程序开发者必须了解CSV文件的真实结构。 为了说明在处理CSV文件时可能遇到的特殊情况,用于测试的CSV文件的 最后两行的“姓名”列均插入了特殊字符。 由于在显示CSV文件内容时,Excel已经对CSV文件进行了处理,因此, 上面使用Excel所看到的内容并不是CSV的真实内容。 如果使用文本编辑器打开,可以看到真实的内容为: ---------- 编号, 姓名 123, 王五 456, "李""“四" 789, 张'三 ---------- 之所以出现这样的内容,是因为我们通常使用Excel编辑CSV文件,然后 使用另存为命令保存为CSV文件。这一过程中,Excel会隐蔽地进行如下处理:1 CSV文件将Excel的同一行中不同单元格的内容使用,(半角逗号分隔开) 2 当内容中出现半角双引号时会自动被转义为两个双引号,即""; 同时内容整体的两端自动被双引号引起来。例如:李"“四-> "李""“四" 了解了数据表和CSV文件的结构,下面就可以编写代码了。 ------------------------------------------------------------ 1. Option Compare Binary 声明 作用:声明当前VB环境中字符串的比较方式 这里的Binary 声明当前VB环境中的字符串依照其在内存中的字节码来进行比较

安卓手机不小心误删文件用手机数据恢复软件免费版还能恢复吗

安卓手机不小心误删文件用手机数据恢复软件免费版还能恢复吗 在外面出差,对方发来重要的文件,无奈之下只能用手机接收,本来想等下午返城了在用电脑处理。但是不小心在路上使用手机的时候删了一些东西,当时慌慌忙忙转车,就没留意,等安定下来,发现好像不小心删除东西了,刚发开来的文件也是没见了。因为格式不是手机能识别的,一不留神就这么没了,真是郁闷,询问了对方,对方也半天没回应,这下郁闷了。手机里不见得文件还能恢复吗? 翻来覆去翻看了很多次我的手机,每次得到的结果都是一样,没戏。甚至上了手机的相关技术论坛,也没找到什么有用的信息。最后,只好直接在百度上面搜索,手机丢失的文件怎么恢复。别说,这一次还真是有所相应了,看着陆陆续续出现的答复,我的心也舒缓了不少。顶尖手机文件恢复工具,这是个什么东西,在网友的答复中,我偶然发现了这个东西,看名字,恢复文件的,好像很管用。了解了一下,是一款恢复文件的工具,可以恢复的还蛮多的,误删除的,格式化的,中病毒的,什么什么的,很多,后面很多类型都不怎么懂,也好像没怎么遇到过,不过总体看来,功能还算齐全吧! 我根据顶尖手机文件恢复工具的教程使用了一下,工具也挺好用的,我们只需要打开顶尖手机文件恢复工具的主界面,点击“恢复删除文件”。此时你已经进入磁盘显示页面,选择目标磁盘,点击“开始扫描”,过程需要几分钟,耐心等待。扫描完毕后将弹出(可以只显示被删除文件)。点击“保存到记录文件”,弹出保存的选择对话框,填写好文件名后点击“保存”即可。 最后我靠着这款工具很顺利的找回了手机删除的文件,试验成功,所以给大家推荐一下,要是急用的时候,这种小工具还真是可以救命的!

实验8 CSV数据文件操作

实验8 CSV数据文件操作 实验目的:了解CSV格式数据记录文件结构,掌握大数据量记录的查询技巧。 实验内容:编程设计一个成语接龙游戏。 具体要求如下: 1、判断输入词语是否是成语; 2、可以判断是否符合成语接龙游戏规则; 3、可以实现提示功能; 4、可以实现显示成语含义的功能; 实验步骤:(基于MFC对话框应用程序实现。) 1、界面设计 2、控件变量定义

3、创建“Idiom”类 3.1“Idiom.h”文件内容 // Idiom.h: interface for the Idiom class. // ///////////////////////////////////////////////////////////////////// / #include #if !defined(AFX_IDIOM_H__C9A16E11_19F4_4BCF_B7D0_4CCF4FA5AE2D__INCLU DED_) #define AFX_IDIOM_H__C9A16E11_19F4_4BCF_B7D0_4CCF4FA5AE2D__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class Idiom { private: CString Idiom1[30805];//成语 CString Idiom2[30805];//读音 CString Idiom3[30805];//释义 CString Idiom4[3041];//首字 unsigned long Idiom5[3041];//首字在大表位置

CSV文件的内容并导入到数据库中

功能:读取CSV文件的内容并导入到数据库中 环境:Access2003 语言:VBA(对于使用VB6.0同样适用) 数据库:D:\db1.mdb 数据表:test userId 数值型 userName 文本型 CSV文件:D:\test.csv (使用Excel打开) 编号姓名 123 王五 456 李"“四 789 张'三 注意,在实际处理CSV文件前,程序开发者必须了解CSV文件的真实结构。 为了说明在处理CSV文件时可能遇到的特殊情况,用于测试的CSV文件的 最后两行的“姓名”列均插入了特殊字符。 由于在显示CSV文件内容时,Excel已经对CSV文件进行了处理,因此, 上面使用Excel所看到的内容并不是CSV的真实内容。 如果使用文本编辑器打开,可以看到真实的内容为: ---------- 编号, 姓名 123, 王五 456, "李""“四" 789, 张'三 ---------- 之所以出现这样的内容,是因为我们通常使用Excel编辑CSV文件,然后 使用另存为命令保存为CSV文件。这一过程中,Excel会隐蔽地进行如下处理:1 CSV文件将Excel的同一行中不同单元格的内容使用,(半角逗号分隔开) 2 当内容中出现半角双引号时会自动被转义为两个双引号,即""; 同时内容整体的两端自动被双引号引起来。例如:李"“四-> "李""“四" 了解了数据表和CSV文件的结构,下面就可以编写代码了。 ------------------------------------------------------------ 1. Option Compare Binary 声明 作用:声明当前VB环境中字符串的比较方式 这里的Binary 声明当前VB环境中的字符串依照其在内存中的字节码来进行比较如果你使用的是普通VB6.0环境,默认的字符串比较就是依照字节码比较

如何实现pandas读取csv文件指定的前几行

如何实现pandas读取csv文件指定的前几行 今天小编给大家分享一篇Python技术开发方面的文章,如何实现pandas读取csv文件指定的前几行,喜欢Python开发的小伙伴下面就随小编一起来了解一下吧。 用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要全部的数据,我们需要的可能仅仅是前面的几行。 这样就可以通过pandas中read_csv中指定行数读取的功能实现。 例如有data.csv文件,文件的内容如下: GreydeMac-mini:chapter06 greyzhang$ cat data.csv ,name_01,coment_01,,,, 2,name_02,coment_02,,,, 3,name_03,coment_03,,,, 4,name_04,coment_04,,,, 5,name_05,coment_05,,,, 6,name_06,coment_06,,,, 7,name_07,coment_07,,,, 8,name_08,coment_08,,,, 9,name_09,coment_09,,,, 10,name_10,coment_10,,,, 11,name_11,coment_11,,,, 12,name_12,coment_12,,,, 13,name_13,coment_13,,,, 14,name_14,coment_14,,,, 15,name_15,coment_15,,,, 16,name_16,coment_16,,,, 17,name_17,coment_17,,,, 18,name_18,coment_18,,,, 19,name_19,coment_19,,,, 20,name_20,coment_20,,,, 21,name_21,coment_21,,,, 如果我们需要的数据仅仅是前5行,那么读取方式可以通过nrows的方式进行指定。编写代码如下:

【免费下载】Matlab读取CSV文件

Matlab读取CSV文件 环境:Matlab R2009a,Win 7 1、用csvread函数 注意:csvread函数只试用与用逗号分隔的纯数字文件 第一种:M = CSVREAD('FILENAME') ,直接读取csv文件的数据,并返回给M 第二种:M = CSVREAD('FILENAME',R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = CSVREAD('FILENAME',R,C,RNG),其中 RNG = [R1 C1 R2 C2],读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。 注意:matlab认为CSV第1行第1列的单元格坐标为(0,0) 给定一个csvlist.csv文件,其内容如下 02, 04, 06, 08, 10, 12 03, 06, 09, 12, 15, 18 05, 10, 15, 20, 25, 30 07, 14, 21, 28, 35, 42 11, 22, 33, 44, 55, 66 例1.1读取整个文件 csvread('csvlist.csv') ans = 2 4 6 8 10 12 3 6 9 12 15 18 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.2读取第2行以下,第0列以右区域的数据 m = csvread('csvlist.dat', 2, 0) m = 5 10 15 20 25 30 7 14 21 28 35 42 11 22 33 44 55 66 例1.3读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据 m = csvread('csvlist.dat', 2, 0, [2,0,3,3]) m = 5 10 15 20 7 14 21 28

CSV文件读写

文件的读取 CSV即Comma Separated Values(以逗号分隔的值),这种文件格式经常用来作为不同程序之间的数据交互的格式。具体文件格式如下。 每条记录占一行。 记录间的值以逗号为分隔符。 逗号前后的空白字符会被忽略。 如果值中包含逗号、换行符、空格、双引号,则该值必须用双引号引起来。 值中的双引号用两个双引号表示。 如下是一段标准的CSV数据,它来自于某次科学实验的采集记录: 1.1993,124,0,13.9,11.2,7.9,5.2,3.7, 2.8,2.7, 3.0,0.0,0.0 2.1993,125,1,14.2,11.4,8.0,5.3, 3.8,2.8,2.7,3.0,0.0,0.0 3.1993,126,2,1 4.4,11.7,8.2, 5.4,3.9,2.8,2.7,3.0,0.0,0.0 4.1993,127,3,13.7,11.1,7.7, 5.1,3.6,2.6,2.6,2.9,0.0,0.0 5.1993,128,4,12.9,10.4,7.2,4.7,3.3,2.4,2.4,2.8,0.0,0.0 6.1993,129,5,12.1,9.7,6.6,4.2,2.9,2.2,2.3,2.7,0.0,0.0 7.1993,130,6,12.3,9.9,6.8,4.3,3.0,2.2,2.3,2.7,0.0,0.0 8.1993,131,7,12.0,9.6,6.6,4.2,2.9,2.1,2.2,2.7,0.0,0.0 9.1993,132,8,12.6,10.1,7.0,4.5,3.1,2.2,2.3,2.7,0.0,0.0 将该段数据保存为某个文件,如:test.csv。Microsoft Excel支持CSV文件格式,图6-12示出在Microsoft Excel中打开test.csv的情形。

csv文件解释

CSV逗号分隔值文件 规则 0 开头是不留空,以行为单位。 1 可含或不含列名,含列名则居文件第一行。 2 一行数据不垮行,无空行。 3 以半角符号,作分隔符,列为空也要表达其存在。 4 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。 5 列内容如存在半角引号(即")则应替换成半角双引号("")转义。 6 文件读写时引号,逗号操作规则互逆。 7 内码格式不限,可为ASCII、Unicode或者其他。 CSV文件多用于储存数据,EXCEL文件可以方便地另存为CSV文件。 CSV最常见于图片扫描文件包中,以下为这种用途文件的介绍。 COMMA SEPARATED VALUE的缩写,出现在档案总管中的档案类型是「逗号分隔」,依计算机原来的设定,如果直接点选该档案,计算机将以EXCEL的模式开启该档案。但建议您千万不要这么做,因为CSV档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的CRC值发生错误。这也是笔者初出茅庐时所得到的惨痛经验,但如果想一窥CSV档的真实面貌,笔者建议您使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。开启后的CSV档包含了四或五个字段(部分),由左至右分别记载着:文件名称(XXXX.JPG)、档案大小(以BYTE为单位)、CRC32值(八个英文字母或数字组成)、档案路径(档案储存的子目录名称)和档案内容描述(一般来说都是明星的英文姓名甚或是专辑名称,也可能空白)。而其中第四栏「档案路径」因为每个人储存整理图档的方式不同,所以本栏通常不存在,而一般有含有「档案路径」这栏的CSV档,又称为ECSV档案所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。下面是一个实际CSV文件中的部分内容,让大家对他有一个感性的认识。我们选的是Sjojo_Rescan 的CSV文件(Sjojo是ASW-亚洲扫图风的成员之一)。 sj_mino1001.jpg,715282,4FB55FE8, sj_mino1002.jpg,471289,93203C5C, sj_mino1003.jpg,451929,C4E80467, 通常CSV文件开头是不留空的,以行为单位,每行中记录一张图片的了多项数据,每项数据用逗号来分隔(标准英文逗号)。一般说来集图用的.CSV文件的格式是这样的:文件名,文件大小(以字节为单位),CRC校验值,注释(可省略) sj_mino1001.jpg,715282,4FB55FE8, | | | | 文件名文件大小CRC值注释(已省略) 如果你的机器上装了Microsoft Excel的话,.csv文件默认是被Excel打开的。需要注意的是,当你双击一个.CSV文件,Excel打开它以后即使不做任何的修改,在关闭的时候Excel往往会提示是否要改成正确的文件格式,这个时候千万记得要选择“否”。因为Excel 认为.CSV 文件中的数字是要用科学记数法来表示的,而我们要的.CSV文件中的数字是普通的。如果你选择了“是”的话,Excel会把CSV文件中所有的数字用科学计数来表示

安卓系统手机数据恢复,手机数据恢复软件免费版

安卓手机数据恢复软件免费版 我记得曾有个朋友很意味深长的说过,放在手机里的文件其实算是最最不安全的一种存放方式。以前,咱们觉得手机很好,因为手机方能携带,可以将几乎海量的数据轻松的带出去,这一点是纸质文件无法做到的,但是,随着手机使用的普及,这种原本优势的地方却让手机显得有些尴尬了,长期在外使用手机,很容易造成手机数据受损,特别是文件丢失,成为手机最高发的现象。不过聪明的人们倒是再一次解决了这个问题,那就是手机恢复工具,怎么使用手机恢复工具恢复数据? 首先,肯定是需要先去下载手机恢复软件,资源大大的有,不信你可以试试,选择好的资源站点进行下载,怎么选择,相信经常使用电脑的大家懂得。下载好软件,我们安装后打开,其实我们在进入软件后就可以看到诸多的提示信息,这是软件比较贴心的一个特色服务之一,引导式的便捷操作方式,让很多第一次使用的人不会感到那么的无助。 其实,也并不要软件的提示,手机数据恢复的接入点很清晰的摆在我们眼前,只要认真一看,就能准确的找到位置,点击进入。之后是扫描,要完成扫描阶段,我们就必须将自己的手机与电脑连接上,然后选择手机所在位置的路径,软件便会根据我们的路径选择对手机进行扫描。现在的手机一般用于存放小型的文本文件,一般情况下扫描的时间也不会太长,也就几分钟到十几分钟不等吧!耐心静候一下! 待到扫描完成之后,在出现的列表中,我们也许会看到很多的文件,这些文件被分为了现存的文件和被删除或丢失的文件两部分,我们要找的肯定是存在于被删除的文件中,可千万不要找错了地方哦!找打文件后勾选上,确认点击下一步,系统再次出现一个界面,这是需要我们操作的最后一个界面,就是选择存放恢复后文件的路径,就是给恢复的文件找一个保存的地方,就像下载新程序一样,很简单,大家都会的!

JAVA读取并解析CSV文件

import com.jfinal.ext.kit.DateKit; import https://www.doczj.com/doc/4017472470.html,ermodel.HSSFCell; import https://www.doczj.com/doc/4017472470.html,ermodel.HSSFRow; import https://www.doczj.com/doc/4017472470.html,ermodel.DateUtil; import java.io.*; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Jason Wong on 2015/6/12. */ public class CsvFileUtil { private static final String SPECIAL_CHAR_A = "[^\",//n ]"; private static final String SPECIAL_CHAR_B = "[^\",//n]"; /** * 构造,禁止实例化 */ private CsvFileUtil() { } /* public static void main(String[] args) { // test try { readCsvFile("e://test1.csv"); } catch (FileNotFoundException ex) { Logger.getLogger(CsvFileUtil.class.getName()).log(L evel.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(CsvFileUtil.class.getName()).log(L evel.SEVERE, null, ex); } }*/ /** * csv文件读取
* 读取绝对路径为argPath的csv文件数据,并以List返回。 *

Java读写CSV文件

Java读写CSV文件 CSV文件简介 逗号分隔型取值格式(英文全称为Comma Separated Values,简称CSV),是一种纯文本格式,用来存储数据。在CSV中,数据的字段由逗号分开,程序通过读取文件重新创建正确的字段,方法是每次遇到逗号时开始新一段数据。 CSV文件是一个计算机数据文件用于执行审判和真正的组织工具,逗号分隔的清单。常常被用于移动表格数据之间的两个不同的计算机程序,例如关系数据库程序和电子表格程序。 本文以下面这个CSV文件为例,向大家简要介绍Java语言的CSV读写操作的一种实现方法。 writers.csv 张艺谋,1951,1114 小沈阳,1981,0507 孙红雷,1970,0816 闫妮,1971,0310 CSV读取操作 CSV文件读取主要用到java.io.BufferedReader类和java.util.StringTokenizer类,BufferedReader用来读入文件,StringTokenizer用来将一行数据分成多个字段。 下面是用来读取CSV文件内容的类: package tip; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; public class ReadCSV {

public static void main(String[] args) { try { File csv = new File("C://writers.csv"); // CSV文件 BufferedReader br = new BufferedReader(new FileReader(csv)); // 读取直到最后一行 String line = ""; while ((line = br.readLine()) != null) { // 把一行数据分割成多个字段 StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { // 每一行的多个字段用TAB隔开表示 System.out.print(st.nextToken() + "/t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { // 捕获File对象生成时的异常 e.printStackTrace(); } catch (IOException e) { // 捕获BufferedReader对象关闭时的异常 e.printStackTrace(); } } } 执行结果如下所示: CSV写操作 CSV文件读取主要用到java.io.BufferedWriter类。 下面是写CSV文件的类:

将所有的csv文件,放到一个csv文件中,并按列排列

将所有的csv文件,放到一个csv文件中,并按列排列 setwd('D:/crn_1')res=list.files(pattern='csv')len=length(res)f irst.data=read.csv(file=res[1],header=T,sep='')#读入第一个文件#文件为frame,总共列,故分别将每一列都单独赋值给一个向量 merge_data1=first.data[1]merge_data2=first.data[2]merge _data3=first.data[3]#将3个一维向量,按列排列,结合成二维数组,共3列 merge_data4=cbind(merge_data1,merge_data2,merge_da ta3)#查看数组的行数first_len=dim(merge_data4)#选取最后20行,以便使所有的文件行数相同,能够按列排列组合first_len1=first_len[1]-19merge_data=merge_data4[first_le n1:first_len[1],1:3] for(i in 2:len){new.data=read.csv(file=res[i],header=T,sep='') new_data1=new.data[1]new_data2=new.data[2]new_data 3=new.data[3]new_data4=cbind(new_data1,new_data2,ne w_data3)new_len=dim(new_data4)new_len1=new_len[1]-1 9new_data=new_data4[new_len1:new_len[1],1:3] merge_data=cbind(merge_data,new_data)}#将数据写出

c语言读取csv文件

include #include #define MAX_LINE 128 typedef struct { char week[4]; char month[4]; char date[3]; char hour_minute_second[9]; char year[5]; } system_time_t;void main() { FILE*fp; float value; system_time_t system_time; char line[MAX_LINE]; if((fp=fopen("d:\\1.csv","r"))==NULL) { printf("Can't open d:\\1.csv\n"); } memset(&system_time,0,sizeof(system_time_t)); while(fgets(line, MAX_LINE, fp)) { sscanf(line,"%f , %s%s%s%s%s",&value, system_time.week, system_time.month, system_time.date, system_time.hour_minute_second, system_time.year); printf("value=%f system_time=%s %s %s %s %s\n", value, system_time.week, system_time.month, system_time.date, system_time.hour_minute_second, system_time.year); } } struct record_t { double money; time_t tim; };

浅谈“CSV”格式文件

浅谈“CSV”格式文件 “CSV”是逗号分隔文件(Comma Separated V alues) 的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件。这种文件格式经常用来作为不同程序之间的数据交互。在CSV 文件中,数据“栏”以逗号分隔,可允许程序通过读取文件为数据重新创建正确的栏结构,并在每次遇到逗号时开始新的一栏。 CSV其实就是COMMA SEPARA TED V ALUE的缩写,出现在档案总管中的档案类型是「逗号分格」,依计算机原来的设定,如果直接点选该档案,计算机将以EXCEL的模式开启该档案。但建议您千万不要这么做,因为CSV档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记数法方式储存,而造成档案中的CRC值发生错误。如果想一窥CSV档的真实面貌,笔者建议您使用WORDPAD(写字板)或是NOTE(记事本)来开启。也可以先另存为新的EXCEL文档后,再打开EXCEL文档。也是方法之一。开启后的CSV档包含了若干个字段(部分)。 创建CSV文件有许多方法。最常用的方法是用电子表格程序,如Microsoft Excel。在Microsoft Excel中,选择“文件”>“另存为”,然后在“文件类型”下拉选择框中选择“CSV(逗号分隔)(*.csv)”。 CSV格式(即文件后缀为.csv,属于用excel软件可编辑的逗号分隔的一种文件格式),用记事本就能打开。 XLS文件就是Microsoft excel电子表格的文件格式,是二进制的文件只有用EXCEL才能打。

CSV是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。 CSV(以逗号分隔),CSV (*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值。工作表中所有的数据行和字符都将保存。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起。 如果单元格显示的是公式而不是数值,该公式将转换为文本方式。所有格式、图形、对象和工作表的其他内容将全部丢失。欧元符号将转换为问号。 文本文件的内容有ASCII字符集中的字符组成 首先:文本文件和二进制文件是有区别的,对于文本文件来说,每个字节(或每几个字节)的意义相同,你只要一个一个字节的读出来就OK了;而对于二进制文件来说,可能有4个字节保存了一个整形,接下去有4个字节保存了一个浮点型等等……所以要想打开二进制文件需要了解它的文件格式。 CSV(以逗号分隔)具体文件格式: 每条记录占一行,以逗号为分隔符,逗号前后的空格会被忽略。字段中包含有逗号,该字段必须用双引号括起来。字段中包含有换行符,该字段必须用双引号括起来。字段前后包含有空格,该字段必须用双引号括起来。 字段中的双引号用两个双引号表示。

文本预览
相关文档 最新文档