① C++ 輸出結果到CSV或者Excel文件中
#include<fstream>
usingnamespacestd;
intmain()
{
//定義文件輸出流
ofstreamoFile;
//打開要輸出的文件
oFile.open("scoresheet.csv",ios::out|ios::trunc);
oFile<<"姓名"<<","<<"年齡"<<","<<"班級內"<<","<<"班主任"<<endl;
oFile<<"張三"<<","<<"22"<<","<<"1"<<","<<"JIM"<<endl;
oFile<<"李四"<<","<<"23"<<","<<"3"<<","<<"TOM"<<endl;
oFile.close();
}
這樣在你的工程容目錄下面你就會發現一個叫scoresheet.csv的文件了。
注意:這里的」,「就相當於EXCEL表格的每一列,不能省略。
謝謝,望採納
② 求教:大數據量導出 Excel
不帶格式的:
1、 直接寫csv文件。
2、COM調用adodb操作excel讀取
想要帶格式的標准xls文件:
請用COM調用adodb讀取,然後調用excel.application格式化。
其他的方法就是扯淡,別給我說
1、phpexcel,那資源消耗只適合玩單機,兼容性也不夠!
2、pear的可以帶格式輸出,但兼容性很差,經常打不開
3、xml方式,製作模板 比較費時。
總結:不帶格式,就用csv最簡單
想帶格式就用adodb+excel.application來操作,(注意:excel 格式化很慢,adodb導出很快,帶格式寫excel就是個悲劇!)
③ C語言輸出csv文件格式如何換列
csv文件即逗號分隔值文件。
逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。
純文本意味著該文件是一個字元序列,不含必須像二進制數字那樣被解讀的數據。
CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字元串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的欄位序列。
要用C語言讀取CSV,首先需要確定文件中定義的字元分隔值,以及每一行各個列的元素格式。
如果所有的元素格式相同,那麼可以每行一個一維數組,所有行組成一個二維數組,逐個元素進行讀取。
如果元素格式不同,可以按照元素類型,構建一個結構體,每行讀到一個結構體變數中,所有行組成一個結構體數組。
下面根據兩種情況,按照分隔符為逗號(,),分別舉一個例子:
文件名設定為in.csv,每行10個元素。
一、所有元素均相同類型,比如int型。
#include <stdio.h>
int main()
{
FILE*fp;
int a[100][10];//定義一個足夠大的數組來存儲。
int line = 0;
int c, i;
fp = fopen("in.csv", "r"); // 以文本方式打開。
if(fp == NULL) return -1; // 打開文件失敗。
while(1)
{
i=0;//列標記清零。
while(1)
{
fscanf(fp, "%d", &a[line][i]);//從文件中讀取一個元素。
c = getchar();//讀取下一個字元,可能是分隔符,換行符或文件結尾。
if(c == '\n'||c == EOF)break;//讀完一行,或者到文件結尾,退出讀取。
i++;
}
line ++;
if(c == EOF) break;
}
fclose(fp); //關閉文件。
//以下循環用來列印所有讀到的值。
for(i = 0; i < line; i ++)
{
for(c = 0; c < 10; c ++)
printf("%d ", a[i][c]);
printf("\n");
}
}
二、每行元素不同。
比如共三列,第一列是int型,第二列是字元串,第三列是float型。
如果分隔符不是空白字元,或者字元串元素中可能存在除分隔符外的其它空白字元,在讀取字元串的時候是不能用fscanf函數的。
定義結構體如下
strcut data
{
int a;
char s[100]; //根據實際要求,定義足夠大的字元數組。
float f;
};
讀取代碼如下:
#include <stdio.h>
int main()
{
FILE*fp;
strcut data a[100];//定義一個足夠大的結構體一維數組來存儲。
int line = 0;
int c,i;
fp = fopen("in.csv", "r"); // 以文本方式打開。
if(fp == NULL) return -1; // 打開文件失敗。
while(1)
{
fscanf(fp, "%d", &a[line].a);//從文件中讀取第一個元素。
c = getchar();//讀取分隔符。
//接下來要讀取字元串,需要逐個字元讀入,直到出現分隔符為止。
i = 0;
while(1)
{
a[line].s[i] = getchar();//讀入一個字元。
if(a[line].s[i] == ',')//發現分隔符
{
a[line].s[i]='\0'; //賦值字元串結束符。
break;//退出讀取字元串。
}
i++;
}
//由於在讀字元串的時候分隔符已經被讀取,這里不需要讀分隔符,而是直接讀下一個元素。
fscanf(fp, "%f", &a[line].f);//從文件中讀取最後一個元素。
c = getchar();//讀取下一個字元,可能是換行符或文件結尾。
line ++;
if(c == EOF) break;//到文件結尾,退出讀取。
}
fclose(fp); //關閉文件。
//以下循環用來列印所有讀到的值。
for(i = 0; i < line; i ++)
{
printf("%d %s %f\n", a[i].a, a[i].s, a[i].f);
}
}
④ 如何導出 CSV 文件
Outlook Express依次打開「文件抄」襲 -> 「導出」 -> 「通訊簿」;選擇「文本文件(以逗號分隔)」,點擊「導出」;點擊「瀏覽」,選擇導出文件的位置和文件名,再點擊「下一步」;選擇要導出的域(保持默認即可),點擊「完成」。Foxmail依次打開「工具」 -> 「地址簿」;在「地址簿」對話框,依次打開「工具」 -> 「導出」 -> 「CSV文件」;點擊「瀏覽」,選擇導出文件的位置和文件名,再點擊「下一步」;選擇要導出的欄位(保持默認即可),點擊「完成」。DreamMail 3依次打開「工具」 -> 「通訊錄」;在「通訊錄」對話框,依次打開「文件」 -> 「導出CSV文件」;選擇導出文件的位置和文件名,再點擊「保存」。DreamMail 4依次打開「文件」 -> 「通訊錄導入導出」 -> 「導出CSV文件」;選擇導出文件的位置和文件名,再點擊「保存」。
⑤ 如何將csv導入mysql和mysql導出csv
(1):mysql 下導出為指定格式的數據的外部任意文件類型 mysql>
use dbname
Database Changed
select * from pollution into outfile 'G:\\arcgisworkspace\\zypdoc\\text.txt'; (指導出數據的,注意轉義字元哦)
SELECT * FROM pollution INTO OUTFILE 'G:\\arcgisworkspace\\zypdoc\\text.csv' FIELDS TERMINATED BY '\,'; (輸出格式控制)
結果為:
1,汽車尾氣,200
2,建築揚沙,180
3,汽車噴漆,160
4,燃煤,240
5,其它,80
(2) 知識補充:
其中option參數常用的5個選項
FIELDS TERMINATED BY 『字元串』:設置字元串為欄位的分割符,默認值為 \t;
FIELDS ENCLOSED BY 『字元』:設置字元串括上char varchar text等字元型欄位,默認值為 無任何符號;
FIELDS OPTIONALLY ENCLOSED BY 『字元』:設置字元串括上欄位的值,默認值為 無任何符號;
LINES STARTING BY 『字元串』:設置每一行開頭的字元,默認值為 無任何字元;
FIELDS ESCAPED BY 『字元』:設置轉義字元,默認值為 \;
LINES TERMINATED BY 『字元串』:設置每行結束符,默認值為 \n;
如:
SELECT * FROM pollution INTO OUTFILE 'G:\\arcgisworkspace\\zypdoc\\text2.csv'
FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"'
LINES STARTING BY '\>' TERMINATED BY '\r\n';
結果為:
>1,"汽車尾氣","200"
>2,"建築揚沙","180"
>3,"汽車噴漆","160"
>4,"燃煤","240"
>5,"其它","80"
(3):mysqlmp 下導出為指定格式的數據的外部任意文件類型 C:\Program Files\MySQL\MySQL Server 5.5\bin>
mysqlmp -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution "--fields-terminated-by=," (記住不要任何多餘的空格,也不用轉移字元;-p後面也不用寫password;注意目
標目錄是文件夾,文件名是表名,後綴是txt文件)
⑥ C語言讀取csv大文件以及結果的存儲問題
y+=atof(stt[7]); 時,stt[7]的值突然被改變了,第二次循環時,甚至只執行到hx+=atof(stt[6]); stt[6]也被改變了.
我認為問題是由於strtok是不安全所導致的,它生成的字元串數組可能被其他線程修改.
我建議你用sscanf來讀取字元串中的數字,比如:
#include "string.h"
#include "math.h"
void main()
{
FILE *fp; /*定義一個文件指針*/
double sx,yw,wl,hx,yy;
int i;
char str[81];
double score[5];
sx=yw=wl=hx=yy=0;
fp=fopen("分數表.csv", "rb"); /*打開文件只讀*/
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s\n",str);
sscanf(str+17,"%lf,%lf,%lf,%lf,%lf",score,score+1,score+2,score+3,score+4);
sx+=score[0];
yw+=score[1];
wl+=score[2];
hx+=score[3];
yy+=score[4];
}
printf("%f,%f,%f,%f,%f\n",sx,yw,wl,hx,yy);
fclose(fp);
}
另外,站長團上有產品團購,便宜有保證