c語言excel中文,excel程序語言

本文目錄一覽:

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);

}

C語言如何操作excel文件?

如果數據簡單的話,可以使用CSV(逗號分隔值)格式的文件。CSV格式的文件可以用Office Excel 打開。比如有要保存的一張表格是這樣的:

—————-表格開始——————-

編號 姓名 性別

1 A 男

2 B 女

3 C 男

—————表格結束——————–

那麼在保存CSV文件裏面數據格式是這樣的:

—————-內容開始—————-

編號,姓名,性別

1, A, 男

2, B, 女

3, C, 男

—————-內容結束—————-

用Excel打開是這樣的:

下面是示例程序:

#include stdio.h

struct Student

{

int id;

char name[10];

char gender[3];

};

int main(int argc, char *argv[])

{

// 在程序所在目錄下面,可以看見一個名為 student.csv 的文件

FILE * file=fopen("student.csv","w");

struct Student studens[]=

{

{1,"A","男"},

{2,"B","女"},

{3,"C","男"},

};

int studensAmount=sizeof(studens)/sizeof(struct Student);

int i;

if(file)

{

fprintf(file,"%s%,%s,%s\n","編號","姓名","性別");

for(i=0;istudensAmount;i++)

{

fprintf(file,"%d%,%s,%s\n",studens[i].id,studens[i].name,studens[i].gender);

}

}

fclose(file);

return 0;}

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

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

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

public DataSet ExcelToDS(string Path) 

string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” +”Data Source=”+ Path +”;”+”Extended Properties=Excel 8.0;”; 

OleDbConnection conn = new OleDbConnection(strConn); 

conn.Open();   

string strExcel = “”;    

OleDbDataAdapter myCommand = null; 

DataSet ds = null; 

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

myCommand = new OleDbDataAdapter(strExcel, strConn); 

ds = new DataSet(); 

myCommand.Fill(ds,”table1″);    

return ds; 

}

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

string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” +”Data Source=”+ Path +”;”+”Extended Properties=Excel 8.0;”; 

OleDbConnection conn = new OleDbConnection(strConn); 

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

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

另外:也可進行寫入EXCEL文件,實例如下: 

public void DSToExcel(string Path,DataSet oldds) 

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

string strCon = ” Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =”+path1+”;Extended Properties=Excel 8.0″ ; 

OleDbConnection myConn = new OleDbConnection(strCon) ; 

string strCom=”select * from [Sheet1$]”; 

myConn.Open ( ) ; 

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom, myConn ) ; 

ystem.Data.OleDb.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand); 

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

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

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

DataSet newds=new DataSet(); 

myCommand.Fill(newds ,”Table1″) ; 

for(int i=0;ioldds.Tables[0].Rows.Count;i++) 

{

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

DataRowState!=Added 

DataRow nrow=aDataSet.Tables[“Table1”].NewRow(); 

for(int j=0;jnewds.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到該目錄下,運行 TlbImp EXCEL.EXE Excel.dll 得到Dll文件。 再在項目中添加引用該dll文件. 

//讀取EXCEL的方法   (用範圍區域讀取數據)

private void OpenExcel(string strFileName)

{

    object missing = System.Reflection.Missing.Value;

    Application excel = new Application();//lauch excel application

    if (excel == null)

    {

        Response.Write(“scriptalert(‘Can’t access excel’)/script”);

    }

    else

    {

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

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

        Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,

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

        //取得第一個工作薄

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

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

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

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

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

        Range rng1 = ws.Cells.get_Range(“B2”, “B” + rowsint);   //item

Range rng2 = ws.Cells.get_Range(“K2”, “K” + rowsint); //Customer

        object[,] arryItem= (object[,])rng1.Value2;   //get range’s value

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

        //將新值賦給一個數組

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

        for (int i = 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 (Process pro in procs)

    {

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

    }

    GC.Collect();

}

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

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

FileStream fs = new FileStream(“d:\\Customer.csv”, FileMode.Open, FileAccess.Read, FileShare.None);

StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936));

string str = “”;

string s = Console.ReadLine();

while (str != null)

{    str = sr.ReadLine();

     string[] xu = new String[2];

     xu = str.Split(‘,’);

     string ser = xu[0]; 

     string dse = xu[1];                if (ser == s)

     { Console.WriteLine(dse);break;

     }

}   sr.Close();

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

//txt文件名

 string fn = DateTime.Now.ToString(“yyyyMMddHHmmss”) + “-” + “PO014” + “.txt”;

OleDbConnection con = new OleDbConnection(conStr); 

 con.Open();

 string sql = “select ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM from TSD_PO014”;        

//OleDbCommand mycom = new OleDbCommand(“select * from TSD_PO014”, mycon);

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

 DataSet ds = new DataSet();

 OleDbDataAdapter oda = new OleDbDataAdapter(sql, con);

 oda.Fill(ds, “PO014”);

 DataTable dt = ds.Tables[0];

FileStream fs = new FileStream(Server.MapPath(“download/” + fn), FileMode.Create, FileAccess.ReadWrite);

 StreamWriter strmWriter = new StreamWriter(fs);    //存入到文本文件中 

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

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

 //{

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

 //}

foreach (DataRow dr in dt.Rows)

 {

     string str0, str1, str2, str3;

     string str = “|”; //數據用”|”分隔開

     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語言打開excel?

C語言打開Excel沒有意義,因為它並不是標準的文本文件,如果你想要數據讀取的話,建議選用Unicode格式文件或二進制文件,這樣才方便你用C語言進行處理。

希望能幫到你。

在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行判斷數據的類型。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200733.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 20:02
下一篇 2024-12-05 20:02

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python讀取中文

    Python是一種高級編程語言,被廣泛地應用於各種領域中。而處理中文數據也是其中重要的一部分。本文將介紹在Python中如何讀取中文,為大家提供指導和幫助。 一、讀取中文文件 在P…

    編程 2025-04-29
  • jQuery Datatable分頁中文

    jQuery Datatable是一個非常流行的數據表插件,它可以幫助您快速地在頁面上創建搜索、過濾、排序和分頁的數據表格。不過,它的默認設置是英文的,今天我們就來探討如何將jQu…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python計算中文字符個數

    本文將從多個方面對Python計算中文字符個數進行詳細的闡述,包括字符串長度計算、正則表達式統計和模塊使用方法等內容。 一、字符串長度計算 在Python中,計算字符串長度是非常容…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 為什麼不能用Microsoft Excel進行Python編程?

    Microsoft Excel是一個廣泛使用的數據分析工具,但是它不能直接用於Python編程。這是因為Microsoft Excel並不是一個編程工具,它的主要功能是進行數據處理…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字符,幫助Python3開發工程師更好的處理中文字符的問題。 一、Python3中文亂碼的原因 在Python3中,中文字符使用的…

    編程 2025-04-29

發表回復

登錄後才能評論