當前位置:首頁 » 辦公資訊 » c怎樣讀取excel數據

c怎樣讀取excel數據

發布時間: 2022-01-18 09:50:24

『壹』 如何用c語言提取excel中的數據

1.方法一:採用OleDB讀取EXCEL文件:

把EXCEL文件當做一個數據源來進行數據的讀取操作,實例如下:

publicDataSetExcelToDS(stringPath)

{

stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;";

OleDbConnectionconn=newOleDbConnection(strConn);

conn.Open();

stringstrExcel="";

OleDbDataAdaptermyCommand=null;

DataSetds=null;

strExcel="select*from[sheet1$]";

myCommand=newOleDbDataAdapter(strExcel,strConn);

ds=newDataSet();

myCommand.Fill(ds,"table1");

returnds;

}

對於EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到

stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;";

OleDbConnectionconn=newOleDbConnection(strConn);

DataTableschemaTable=objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);

stringtableName=schemaTable.Rows[0][2].ToString().Trim();

另外:也可進行寫入EXCEL文件,實例如下:
publicvoidDSToExcel(stringPath,DataSetoldds)

{

//先得到匯總EXCEL的DataSet主要目的是獲得EXCEL在DataSet中的結構

stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+path1+";ExtendedProperties=Excel8.0";

OleDbConnectionmyConn=newOleDbConnection(strCon);

stringstrCom="select*from[Sheet1$]";

myConn.Open();

OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);

ystem.Data.OleDb.OleDbCommandBuilderbuilder=newOleDbCommandBuilder(myCommand);

//QuotePrefix和QuoteSuffix主要是對builder生成InsertComment命令時使用。

builder.QuotePrefix="[";//獲取insert語句中保留字元(起始位置)

builder.QuoteSuffix="]";//獲取insert語句中保留字元(結束位置)

DataSetnewds=newDataSet();

myCommand.Fill(newds,"Table1");

for(inti=0;i<oldds.Tables[0].Rows.Count;i++)

{

在使用ImportRow後newds內有值,但不能更新到Excel中因為所有導入行的

DataRowState!=Added

DataRownrow=aDataSet.Tables["Table1"].NewRow();

for(intj=0;j<newds.Tables[0].Columns.Count;j++)

{

nrow[j]=oldds.Tables[0].Rows[i][j];

}

newds.Tables["Table1"].Rows.Add(nrow);

}

myCommand.Update(newds,"Table1");

myConn.Close();

}

2.方法二:引用的com組件:Microsoft.Office.Interop.Excel.dll讀取EXCEL文件
首先是Excel.dll的獲取,將Office安裝目錄下的Excel.exe文件Copy到DotNet的bin目錄下,cmd到該目錄下,運行TlbImpEXCEL.EXEExcel.dll得到Dll文件。再在項目中添加引用該dll文件.
//讀取EXCEL的方法(用范圍區域讀取數據)

privatevoidOpenExcel(stringstrFileName)

{

objectmissing=System.Reflection.Missing.Value;

Applicationexcel=newApplication();//lauchexcelapplication

if(excel==null)

{

Response.Write("<script>alert('Can'taccessexcel')</script>");

}

else

{

excel.Visible=false;excel.UserControl=true;

//以只讀的形式打開EXCEL文件

Workbookwb=excel.Application.Workbooks.Open(strFileName,missing,true,missing,missing,missing,

missing,missing,missing,true,missing,missing,missing,missing,missing);

//取得第一個工作薄

Worksheetws=(Worksheet)wb.Worksheets.get_Item(1);

//取得總記錄行數(包括標題列)

introwsint=ws.UsedRange.Cells.Rows.Count;//得到行數

//intcolumnsint=mySheet.UsedRange.Cells.Columns.Count;//得到列數

//取得數據范圍區域(不包括標題列)

Rangerng1=ws.Cells.get_Range("B2","B"+rowsint);//item

Rangerng2=ws.Cells.get_Range("K2","K"+rowsint);//Customer

object[,]arryItem=(object[,])rng1.Value2;//getrange'svalue

object[,]arryCus=(object[,])rng2.Value2;

//將新值賦給一個數組

string[,]arry=newstring[rowsint-1,2];

for(inti=1;i<=rowsint-1;i++)

{

//Item_Code列

arry[i-1,0]=arryItem[i,1].ToString();

//Customer_Name列

arry[i-1,1]=arryCus[i,1].ToString();

}

Response.Write(arry[0,0]+"/"+arry[0,1]+"#"+arry[rowsint-2,0]+"/"+arry[rowsint-2,1]);

}

excel.Quit();excel=null;

Process[]procs=Process.GetProcessesByName("excel");

foreach(Processproinprocs)

{

pro.Kill();//沒有更好的方法,只有殺掉進程

}

GC.Collect();

}

3.方法三:將EXCEL文件轉化成CSV(逗號分隔)的文件,用文件流讀取(等價就是讀取一個txt文本文件)。


先引用命名空間:usingSystem.Text;和usingSystem.IO;

FileStreamfs=newFileStream("d:\Customer.csv",FileMode.Open,FileAccess.Read,FileShare.None);

StreamReadersr=newStreamReader(fs,System.Text.Encoding.GetEncoding(936));

stringstr="";

strings=Console.ReadLine();

while(str!=null)

{str=sr.ReadLine();

string[]xu=newString[2];

xu=str.Split(',');

stringser=xu[0];

stringdse=xu[1];if(ser==s)

{Console.WriteLine(dse);break;

}

}sr.Close();

另外也可以將資料庫數據導入到一個txt文件,實例如下:
//txt文件名

stringfn=DateTime.Now.ToString("yyyyMMddHHmmss")+"-"+"PO014"+".txt";

OleDbConnectioncon=newOleDbConnection(conStr);

con.Open();

stringsql="selectITEM,REQD_DATE,QTY,PUR_FLG,PO_NUMfromTSD_PO014";

//OleDbCommandmycom=newOleDbCommand("select*fromTSD_PO014",mycon);

//OleDbDataReadermyreader=mycom.ExecuteReader();//也可以用Reader讀取數據

DataSetds=newDataSet();

OleDbDataAdapteroda=newOleDbDataAdapter(sql,con);

oda.Fill(ds,"PO014");

DataTabledt=ds.Tables[0];

FileStreamfs=newFileStream(Server.MapPath("download/"+fn),FileMode.Create,FileAccess.ReadWrite);

StreamWriterstrmWriter=newStreamWriter(fs);//存入到文本文件中

//把標題寫入.txt文件中

//for(inti=0;i<dt.Columns.Count;i++)

//{

//strmWriter.Write(dt.Columns[i].ColumnName+"");

//}

foreach(DataRowdrindt.Rows)

{

stringstr0,str1,str2,str3;

stringstr="|";//數據用"|"分隔開

str0=dr[0].ToString();

str1=dr[1].ToString();

str2=dr[2].ToString();

str3=dr[3].ToString();

str4=dr[4].ToString().Trim();

strmWriter.Write(str0);

strmWriter.Write(str);

strmWriter.Write(str1);

strmWriter.Write(str);

strmWriter.Write(str2);

strmWriter.Write(str);

strmWriter.Write(str3);

strmWriter.WriteLine();//換行

}

strmWriter.Flush();

strmWriter.Close();

if(con.State==ConnectionState.Open)

{

con.Close();

}

『貳』 怎麼用C/C++語言讀取excel文件的某一行某一列

曾用C++ Builder 寫過EXCEL操作。
一般有兩種方法:
1,用ADO連續EXCEL資料庫,這種方式,操作可用SQL來操作。
2,用OLE方式,這種方式可以達到EXCEL中大部分的功能和操作。

以下供參考:

/************* 1--- ADO *************/
//.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <Dialogs.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *btnOpen;
TButton *btnExit;
TOpenDialog *OpenDialog1;
TButton *btnEx;
TDataSource *DataSource1;
TADOConnection *ADOConnection1;
TADOQuery *ADOQuery1;
TDBGrid *DBGrid1;
void __fastcall btnExClick(TObject *Sender);
void __fastcall btnOpenClick(TObject *Sender);
void __fastcall btnExitClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DBGrid1->DataSource = DataSource1;
DataSource1->DataSet = ADOQuery1;
ADOQuery1->Connection = ADOConnection1;
ADOConnection1->LoginPrompt = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnExClick(TObject *Sender)
{
if(ADOQuery1->Active && ADOQuery1->RecordCount>0 )
{
int col;
AnsiString s;
FILE *fp;
fp = fopen("c:\\out.txt","w+t");
if(fp==NULL)
{
Application->MessageBox("導出文件建立失敗","提示");
return ;
}
col = ADOQuery1->Fields->Count;
ADOQuery1->First();
while(!ADOQuery1->Eof)
{
s = "";
for(int i=0;i<col;i++)
s += ADOQuery1->Fields->Fields[i]->AsString +"\t";

fprintf(fp,"%s\n",s.c_str());
ADOQuery1->Next();
}
fclose(fp);
}
else
{
Application->MessageBox("沒有需要導出的記錄,請重新打開XLS文件","提示");
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
AnsiString sFile="";
AnsiString sCon;
if(OpenDialog1->Execute())
{
sFile = OpenDialog1->FileName;
/*
sCon = AnsiString("Driver={Microsoft Excel Driver (*.xls)};DBQ=")
+ sFile +"; ";
*/
sCon = AnsiString("Provider=MSDASQL.1;Persist Security Info=False;Extended Properties='DSN=Excel Files;DBQ=")
+ sFile +"'; ";

}

try
{
if(sFile!="")
{
ADOConnection1->Connected = False;
ADOConnection1->ConnectionString = sCon;
ADOConnection1->Connected = True;
}
}
catch(...)
{
Application->MessageBox("連接XLS失敗","提示");
return ;
}

if(ADOConnection1->Connected)
{
AnsiString sSQL = "Select * from [Sheet1$]";
ADOQuery1->SQL->Text = sSQL;
ADOQuery1->Active = True;
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

/************* 2-- OLE *************/
C++ Builder把Excel自動化對象的功能包裝在下面的四個Ole Object Class函數中,應用人員可以很方便地進行調用。
設置對象屬性:void OlePropertySet(屬性名,參數……);
獲得對象屬性:Variant OlePropertyGet(屬性名,參數……);
調用對象方法:1) Variant OleFunction(函數名,參數……);
2) void OleProcere(過程名,參數……);

在程序中可以用宏定義來節省時間:

#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcere

舉例:
ExcelApp.OlePropertyGet("workbooks").OleFunction("Add");
可寫為
ExcelApp.PG("workbooks").FN("Add");

C++ Builder中使用OLE控制Excel2000,必須掌握Excel2000的自動化對象及Microsoft Word Visual Basic幫助文件中的關於Excel的對象、方法和屬性。對象是一個Excel元素,屬性是對象的一個特性或操作的一個方面,方法是對象可以進行的動作。
首先定義以下幾個變數:
Variant ExcelApp,Workbook1,Sheet1,Range1;

1、Excel中常用的對象是:Application,Workbooks,Worksheets等。

★創建應用對象★
Variant ExcelApp;
ExcelApp = Variant::CreateObject ("Excel.Application");
或者
ExcelApp = CreateOleObject ("Excel.Application");

★創建工作簿對象★
Variant WorkBook1;
WorkBook1 = ExcelApp.PG("ActiveWorkBook");

★創建工作表對象★
Variant Sheet1;
Sheet1 = WorkBook1.PG("ActiveSheet");

★創建區域對象★
Variant Range;
Range = Sheet1.PG("Range","A1:A10");
或者使用
Excel.Exec(PropertyGet("Range")<<"A1:C1").Exec(Procere("Select"));

2、常用的屬性操作:

★使Excel程序不可見★
ExcelApp.PS("Visible", (Variant)false);

★新建EXCEL文件★

◎ 新建系統模板的工作簿
ExcelApp.PG("workbooks").FN("Add") //默認工作簿
ExcelApp.PG("workbooks").FN("Add", 1) //單工作表
ExcelApp.PG("workbooks").FN("Add", 2) //圖表
ExcelApp.PG("workbooks").FN("Add", 3) //宏表
ExcelApp.PG("workbooks").FN("Add", 4) //國際通用宏表
ExcelApp.PG("workbooks").FN("Add", 5) //與默認的相同
ExcelApp.PG("workbooks").FN("Add", 6) //工作簿且只有一個表
或者使用ExcelApp的Exec方法
Excel.Exec(PropertyGet("Workbooks")).Exec(Procere("Add"));
◎ 新建自己創建的模板的工作簿
ExcelApp.PG("workbooks").FN("Add", "C:\\Temp\\result.xlt");

★打開工作簿★
ExcelApp.PG("workbooks").FN("open", "路徑名.xls")

★保存工作簿★
WorkBook1.FN("Save"); //保存工作簿
WorkBook1.FN("SaveAs", "文件名");//工作簿保存為,路徑注意用"\\"

★退出EXCEL★
ExcelApp.FN ("Quit");
ExcelApp = Unassigned;
或者
ExcelApp.Exec(Procere("Quit"));

★操作工作表★

◎ 選擇選擇工作表中第一個工作表
Workbook1.PG("Sheets", 1).PR("Select");
Sheet1 = Workbook1.PG("ActiveSheet");

◎ 重命名工作表
Sheet1.PS("Name", "Sheet的新名字");

◎ 當前工作簿中的工作表總數
int nSheetCount=Workbook1.PG("Sheets").PG("Count");

★操作行和列★

◎ 獲取當前工作表中有多少行和多少列:
Sheet1.PG("UsedRange").PG("Columns").PG("Count"); //列數
Sheet1.PG("UsedRange").PG("Rows").PG("Count"); //行數

◎ 設置列寬
ExcelApp.PG("Columns", 1).PS("ColumnWidth", 22);
或者
Range = ExcelApp.PG("Cells", 1, 3);
Range.PS("ColumnWidth", 22);

◎ 設置行高
ExcelApp.PG("Rows", 2).PS("RowHeight", 25);
或者
Range = ExcelApp.PG("Cells", 2, 1);
Range.PS("RowHeight", 25);

◎ 在工作表最前面插入一行
Sheet1.PG("Rows", 1).PR("Insert");

◎ 刪除一行
ExcelApp.PG("Rows", 2).PR("Delete"); //將第2行刪除

// 本文作者:ccrun ,如轉載請保證本文檔的完整性,並註明出處。
// 歡迎光臨 C++ Builder 研究 www.ccrun.com
// 摘自:http://www.ccrun.com/doc/go.asp?id=529

★操作單元格★

◎ 設置單元格字體
Sheet1.PG("Cells", 1, 1).PG("Font").PS("Name", "隸書"); //字體
Sheet1.PG("Cells", 2, 3).PG("Font").PS("size", 28); //大小

◎ 設置所選區域字體
Range.PG("Cells").PG("Font").PS("Size", 28);
// 本文轉自 C++Builder研究 - http://www.ccrun.com/article.asp?i=529&d=0iezy5
Range.PG("Cells").PG("Font").PS("Color", RGB(0, 0, 255));
其中參數的設置:
Font Name : "隸書" //字體名稱
Size : 12 //字體大小
Color : RGB(*,*,*) //顏色
Underline : true/false //下劃線
Italic: true/false //斜體

◎ 設置單元格格式為小數百分比
Sheet1.PG("Cells", 1, 1).PS("NumberFormatLocal", "0.00%");

◎ 設定單元格的垂直對齊方式
Range = ExcelApp.PG("Cells", 3, 4);
// 1=靠上 2=居中 3=靠下對齊 4=兩端對齊 5=分散對齊
Range.PS("VerticalAlignment", 2);

◎ 設定單元格的文本為自動換行
Range = ExcelApp.PG("Cells", 3, 4);
Range.PS("WrapText", true);

★單元格的合並★

◎ Range = Sheet1.PG("Range", "A1:A2"); //A1和A2單元格合並
String strRange = "A" + IntToStr(j) + ":" + "C" + IntToStr(j); //比如:A1:C5
Range1=Sheet1.PG("Range", strRange.c_str()); //可以用變數控制單元格合並
Range1.FN("Merge", false);

★讀寫單元格★

◎ 指定單元格賦值
String strValue = "abcdefg";
Sheet1.PG("Cells", 3, 6).PS("Value", strValue.c_str());
Sheet1.PG("Cells", j, 1).PS("Value", "總記錄:" + String(j-6));
或者使用
Excel.Exec(PropertyGet("Cells")<<1<<3).Exec(PropertySet("Value")<<15);

◎ 所選區域單元格賦值
Range.PG("Cells").PS("Value", 10);

◎ 所選區域行賦值
Range.PG("Rows",1).PS("Value", 1234);

◎ 工作表列賦值
Sheet1.PG("Columns",1).PS("Value", 1234);

◎ 讀取取值語句:
String strValue = Sheet1.PG("Cells", 3, 5).PG("Value");

『叄』 如何用C語言實現讀取excel文件中的數據呢

基本思路
基礎實現方法同上篇文章《直接通過ODBC讀、寫Excel表格文件》相同,都是通過ODBC來把Excel表格文件當成資料庫文件來進行讀、寫等操作,所以在Excel表格文件中寫入的行頭名必須是唯一的(不要重名,相當於資料庫中的ID值)。本文中對Excel文件的操作都被封裝進一個類CSpreadSheet中,通過它我們可以非常簡便的實現各種Excel表格數據操作,並且可以對該類進行擴充來滿足自己的需求。
具體實現

一、 包含Excel文件操作類頭文件
#include "CSpreadSheet.h"
二、 新建Excel文件,並寫入默認數據
// 新建Excel文件名及路徑,TestSheet為內部表名
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray sampleArray, testRow;

SS.BeginTransaction();

// 加入標題
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年齡");
SS.AddHeaders(sampleArray);

// 加入數據
CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鵬"};
CString strAge[] = {"27","23","28","27","26"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}

SS.Commit();

三、 讀取Excel文件數據
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;

//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 讀取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}

m_AccessList.AddString(strContents);
}

四、 對已存在Excel表格數據進行添加、插入、替換操作
// 初始化測試行數據,進行添加、插入及替換數據操作演示
for (int k = 1; k <= 2; k++)
{
testRow.Add("Test");
}

SS.AddRow(testRow); // 添加到尾部
SS.AddRow(testRow, 2); // 插入新行到第二行
SS.AddRow(testRow, 6, true); // 替換原第四行來新的內容
SS.AddCell("徐景周", 1,2); // 添加(不存在)或替換(存在)第二行,第一列單元格內容

SS.Commit();
五、 對已存在Excel表格數據進行行、列、單元格查詢
void CExcelAccessDlg::OnQuery()
{
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;
CString tempString = "";

UpdateData();

if(m_strRow == "" && m_strColumn == "") // 查詢為空
{
AfxMessageBox("行號、列號不能同時為空!");
return;
}
else if(m_strRow == "" && m_strColumn != "") // 查詢指定列數據
{
int iColumn = atoi(m_strColumn);
int iCols = SS.GetTotalColumns();
if(iColumn > iCols) // 超出表范圍查詢時
{
CString str;
str.Format("表中總列數為: %d, ", iCols);
AfxMessageBox(str + " 查詢列數大於Excel表中總列數,請重新輸入!");
return;
}

// 讀取一列數據,並按行讀出
if(!SS.ReadColumn(Column, iColumn))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString tmpStr;
for (int i = 0; i < Column.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", i+1,iColumn,Column.GetAt(i));
tempString += tmpStr;
}

AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn == "") // 查詢指定行數數據
{
int iRow = atoi(m_strRow);
int iRows = SS.GetTotalRows();

if(iRow > iRows) // 超出表范圍查詢時
{
CString str;
str.Format("表中總行數為: %d, ", iRows);
AfxMessageBox(str + " 查詢行數大於Excel表中總行數,請重新輸入!");
return;
}

// 讀取指定行數據
if(!SS.ReadRow(Rows, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString tmpStr;
for (int i = 0; i < Rows.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", iRow, i+1, Rows.GetAt(i));
tempString += tmpStr;
}

AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn != "") // 查詢指定單元格數據
{
int iRow = atoi(m_strRow), iColumn = atoi(m_strColumn);
int iRows = SS.GetTotalRows(), iCols = SS.GetTotalColumns();

if(iColumn > iCols) // 超出表范圍查詢時
{
CString str;
str.Format("表中總列數為: %d, ", iCols);
AfxMessageBox(str + " 查詢列數大於Excel表中總列數,請重新輸入!");
return;
}
else if(iRow > iRows)
{
CString str;
str.Format("表中總行數為: %d, ", iRows);
AfxMessageBox(str + " 查詢行數大於Excel表中總行數,請重新輸入!");
return;
}

// 讀取指定行、列單元格數據
if(!SS.ReadCell(tempString, iColumn, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString str;
str.Format("行號: %d, 列號: %d ,內容: %s", iRow,iColumn,tempString);
AfxMessageBox(str);
}

}

六、 將存在的Excel轉換另存為指定分隔的文本文件
// 將原Excel文件轉換為用分號分隔的文本,並另存為同名文本文件
SS.Convert(";");
七、 刪除Excel中表格
SS. DeleteSheet(); // 刪除Excel文件中所有表格
SS. DeleteSheet(" TestSheet "); // 刪除Excel中TextSheet表格
八、 獲取Excel中總行數、總列數、當前行
int iCols = SS.GetTotalColumns(); // 總列數
int iRows = SS.GetTotalRows(); // 總行數
int iCurRow = SS.GetCurrentRow(); // 當前所在行號
九、 獲取行頭數據
CStringArray rowHeader;
SS.GetFieldNames(rowHeader);
CString tmpStr;
for (int i = 0; i < rowHeader.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", 1, i+1, rowHeader.GetAt(i));
tempString += tmpStr;
}
AfxMessageBox(tempString);

最後,如果想知道詳細實現細節的話,可以在下載示例源碼後,仔細查看源碼既可(內有詳細注釋)。

『肆』 在C語言中,如何將EXCEL或者文檔中的數據讀入程序中

1 使用的命名空間為:using System.Data.OleDb;
2 連接資料庫的字元串為:
string myConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\
目錄.xls;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"";
*.xsl可以認為是資料庫了,HDR表示是否隱藏excel的第一行(因為第一行一般表示欄位名稱)
IMEX 參數,因為不同的模式代表著不同的讀寫行為:當IMEX=0 時為「匯出模式」,這個模式開啟的 Excel 檔案只能用來做「寫入」用途。
當 IMEX=1 時為「匯入模式」,這個模式開啟的 Excel 檔案只能用來做「讀取」用途。當 IMEX=2 時為「連結模式」,這個模式開啟的 Excel 檔案可同時支援「讀取」與「寫入」用途。
3.OleDbConnection myConnection = new OleDbConnection(myConn);
4.string mySQLstr = "SELECT f1,f2,f5 FROM [Sheet1$]";
//[Sheet1$]就是表格了,選取第1,2,5列,用Fn表示第n列5 OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(mySQLstr, myConnection);6 DataSet myDS = new DataSet();7 myDataAdapter.Fill(myDS, "[Sheet1$]");
//原理都跟讀取sql是一樣
DataTable dt = myConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
//把相關信息記錄到datatable中
string tbname = dt.Rows[0][2].ToString().Trim();
//讀取表名信息【注意】由於excel每個單元格內數據默認的格式為:varchar(255),因此讀取超過255的單元格內容是需要修改注冊表,這里提供修改方法:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]"TypeGuessRows"="0"表示從前TypeGuessRows行判斷數據的類型。

『伍』 C語言中如何導入excel的數據

首先得把引用里將excel模塊引用上
然後定義數組
將excel作為對象打開
對數組賦值
比如a(i,j)=cells(i,j)

『陸』 如何用C語言來讀取EXCEL文件中的數據

自己去讀Excel文件我估計幾乎是不可能的,可以藉助Excel提供的資料庫驅動程序以資料庫的形式去訪問,但用純C語言穿靴戴帽的代碼較多,用C++估計簡便點,網上很容易搜到。

『柒』 C語言讀取excel文件的數據

簡單的方法是通過ODBC來實現:
具體實現
一、 包含Excel文件操作類頭文件
#include "CSpreadSheet.h"
二、 新建Excel文件,並寫入默認數據
// 新建Excel文件名及路徑,TestSheet為內部表名
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray sampleArray, testRow;

SS.BeginTransaction();

// 加入標題
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年齡");
SS.AddHeaders(sampleArray);

// 加入數據
CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鵬"};
CString strAge[] = {"27","23","28","27","26"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}

SS.Commit();

三、 讀取Excel文件數據
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;

//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 讀取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}

m_AccessList.AddString(strContents);
}

熱點內容
馬路上汽車的噪音在多少分貝 發布:2023-08-31 22:08:23 瀏覽:1765
應孕棒多少錢一盒 發布:2023-08-31 22:08:21 瀏覽:1255
標准養老金一年能領多少錢 發布:2023-08-31 22:05:05 瀏覽:1541
湖北通城接網線多少錢一個月 發布:2023-08-31 21:59:51 瀏覽:1620
開隨車吊車多少錢一個月 發布:2023-08-31 21:55:06 瀏覽:1381
京東付尾款怎麼知道前多少名 發布:2023-08-31 21:52:58 瀏覽:1702
在學校租鋪面一個月要多少錢 發布:2023-08-31 21:52:09 瀏覽:1837
2寸有多少厘米 發布:2023-08-31 21:50:34 瀏覽:1476
知道電壓如何算一小時多少電 發布:2023-08-31 21:46:20 瀏覽:1461
金手鐲54號圈周長是多少厘米 發布:2023-08-31 21:44:28 瀏覽:1635