2024年9月c excel(如何用c语言提取excel中的数据)

 更新时间:2024-10-10 17:01:18

  ⑴cexcel(如何用c语言提取excel中的数据

  ⑵检查到单元格为空就退出当前列c语言能对EXCEL数据进行操作吗可以啊,再在项目中添加引用该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(“《script》alert(’Can’t?aess?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();//取得总记录行数???(包括标题列)????????int?rowsint?=?ws.UsedRange.Cells.Rows.Count;?//得到行数????????//int?columnsint?=?mySheet.UsedRange.Cells.Columns.Count;//得到列数//取得数据范围区域?(不包括标题列)?????????Range?rng?=?ws.Cells.get_Range(“B“,?“B“?+?rowsint);???//itemRange?rng?=?ws.Cells.get_Range(“K“,?“K“?+?rowsint);?//Customer????????object)rng.Value;???//get?range’s?value????????object)rng.Value;???????????//将新值赋给一个数组????????string;????????for?(int?i?=?;?i?《=?rowsint-;?i++)????????{????????????//Item_Code列????????????arry.ToString();????????????//Customer_Name列????????????arry.ToString();????????}????????Response.Write(arry);????}?????excel.Quit();?excel?=?null;????Process?procs?=?Process.GetProcessesByName(“excel“);foreach?(Process?pro?in?procs)????{????????pro.Kill();//没有更好的方法,只有杀掉进程????}????GC.Collect();}.方法三:将EXCEL文件转化成CSV(逗号分隔的文件,本文目录如何用c语言提取excel中的数据c语言怎么获得excel表格的列长c语言能对EXCEL数据进行操作吗如何用c语言提取excel中的数据.方法一:采用OleDB读取EXCEL文件:?把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:?//txt文件名?string?fn?=?DateTime.Now.ToString(“yyyyMMddHHmmss“)?+?“-“?+?“PO“?+?“.txt“;OleDbConnection?con?=?new?OleDbConnection(conStr);??con.Open();?string?sql?=?“select?ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM?from?TSD_PO“;????????//OleDbmand?my?=?new?OleDbmand(“select?*?from?TSD_PO“,?mycon);?//OleDbDataReader?myreader?=?my.ExecuteReader();?//也可以用Reader读取数据?DataSet?ds?=?new?DataSet();?OleDbDataAdapter?oda?=?new?OleDbDataAdapter(sql,?con);?oda.Fill(ds,?“PO“);?DataTable?dt?=?ds.Tables;FileStream?fs?=?new?FileStream(Server.MapPath(“download/“?+?fn),?FileMode.Create,?FileAess.ReadWrite);?StreamWriter?strmWriter?=?new?StreamWriter(fs);????//存入到文本文件中?//把标题写入.txt文件中??//for?(int?i?=?;?i?《dt.Columns.Count;i++)?//{?//????strmWriter.Write(dt.Columns.ColumnName?+?“?“);?//}foreach?(DataRow?dr?in?dt.Rows)?{?????string?str,?str,?str,?str;?????string?str?=?“|“;?//数据用“|“分隔开?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString().Trim();?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.WriteLine();?//换行?}?strmWriter.Flush();?strmWriter.Close();?if?(con.State?==?ConnectionState.Open)?{?????con.Close();?}c语言怎么获得excel表格的列长先要确定你使用哪个框架来操作EXCEL,你先每列的第一个单元格检查是否有数据,实例如下:?public?DataSet?ExcelToDS(string?Path)?{?string?strConn?=?“Provider=Microsoft.Jet.OLEDB..;“?+“Data?Source=“+?Path?+“;“+“Extended?Properties=Excel?.;“;?OleDbConnection?conn?=?new?OleDbConnection(strConn);?conn.Open();???string?strExcel?=?““;????OleDbDataAdapter?mymand?=?null;?DataSet?ds?=?null;?strExcel=“select?*?from?“;?mymand?=?new?OleDbDataAdapter(strExcel,?strConn);?ds?=?new?DataSet();?mymand.Fill(ds,“table“);????return?ds;?}对于EXCEL中的表即sheet()如果不是固定的可以使用下面的方法得到??string?strConn?=?“Provider=Microsoft.Jet.OLEDB..;“?+“Data?Source=“+?Path?+“;“+“Extended?Properties=Excel?.;“;?OleDbConnection?conn?=?new?OleDbConnection(strConn);?DataTable?schemaTable?=?objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);?string?tableName=schemaTable.Rows.ToString().Trim();另外:也可进行写入EXCEL文件,实例如下:?public?void?DSToExcel(string?Path,DataSet?oldds)?{?//先得到汇总EXCEL的DataSet?主要目的是获得EXCEL在DataSet中的结构?string?strCon?=?“?Provider?=?Microsoft.Jet.OLEDB..?;?Data?Source?=“+path+“;Extended?Properties=Excel?.“?;?OleDbConnection?myConn?=?new?OleDbConnection(strCon)?;?string?str=“select?*?from?“;?myConn.Open?(?)?;?OleDbDataAdapter?mymand?=?new?OleDbDataAdapter?(?str,?myConn?)?;?ystem.Data.OleDb.OleDbmandBuilder?builder=new?OleDbmandBuilder(mymand);?//QuotePrefix和QuoteSuffix主要是对builder生成Insertment命令时使用,但不能更新到Excel中因为所有导入行的DataRowState!=Added?DataRow?nrow=aDataSet.Tables.NewRow();?for(int?j=;j《newds.Tables.Columns.Count;j++)?{????nrow;?}?newds.Tables.Rows.Add(nrow);?}?mymand.Update(newds,“Table“);?myConn.Close();?}.方法二:引用的组件:Microsoft.Office.Interop.Excel.dll???读取EXCEL文件?首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到Dot的bin目录下,cmd到该目录下,运行?TlbImp?EXCEL.EXE?Excel.dll?得到Dll文件。

  ⑶如何用c语言提取excel中的数据

  ⑷方法一:采用OleDB读取EXCEL文件:

  ⑸把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:

  ⑹public?DataSet?ExcelToDS(string?Path)?{?string?strConn?=?“Provider=Microsoft.Jet.OLEDB..;“?+“Data?Source=“+?Path?+“;“+“Extended?Properties=Excel?.;“;?OleDbConnection?conn?=?new?OleDbConnection(strConn);?conn.Open();???string?strExcel?=?““;????OleDbDataAdapter?mymand?=?null;?DataSet?ds?=?null;?strExcel=“select?*?from?“;?mymand?=?new?OleDbDataAdapter(strExcel,?strConn);?ds?=?new?DataSet();?mymand.Fill(ds,“table“);????return?ds;?}

  ⑺对于EXCEL中的表即sheet()如果不是固定的可以使用下面的方法得到

  ⑻string?strConn?=?“Provider=Microsoft.Jet.OLEDB..;“?+“Data?Source=“+?Path?+“;“+“Extended?Properties=Excel?.;“;?OleDbConnection?conn?=?new?OleDbConnection(strConn);?DataTable?schemaTable?=?objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);?string?tableName=schemaTable.Rows.ToString().Trim();另外:也可进行写入EXCEL文件,实例如下:?public?void?DSToExcel(string?Path,DataSet?oldds)?{?//先得到汇总EXCEL的DataSet?主要目的是获得EXCEL在DataSet中的结构?string?strCon?=?“?Provider?=?Microsoft.Jet.OLEDB..?;?Data?Source?=“+path+“;Extended?Properties=Excel?.“?;?OleDbConnection?myConn?=?new?OleDbConnection(strCon)?;?string?str=“select?*?from?“;?myConn.Open?(?)?;?OleDbDataAdapter?mymand?=?new?OleDbDataAdapter?(?str,?myConn?)?;?ystem.Data.OleDb.OleDbmandBuilder?builder=new?OleDbmandBuilder(mymand);?//QuotePrefix和QuoteSuffix主要是对builder生成Insertment命令时使用。?builder.QuotePrefix=“[“;?????//获取insert语句中保留字符(起始位置?builder.QuoteSuffix=“]“;?//获取insert语句中保留字符(结束位置?DataSet?newds=new?DataSet();?mymand.Fill(newds?,“Table“)?;?for(int?i=;i《oldds.Tables.Rows.Count;i++)?{

  ⑼在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的

  ⑽DataRowState!=Added?DataRow?nrow=aDataSet.Tables.NewRow();?for(int?j=;j《newds.Tables.Columns.Count;j++)?{????nrow;?}?newds.Tables.Rows.Add(nrow);?}?mymand.Update(newds,“Table“);?myConn.Close();?}.方法二:引用的组件:Microsoft.Office.Interop.Excel.dll???读取EXCEL文件?首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到Dot的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(“《script》alert(’Can’t?aess?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();//取得总记录行数???(包括标题列)????????int?rowsint?=?ws.UsedRange.Cells.Rows.Count;?//得到行数????????//int?columnsint?=?mySheet.UsedRange.Cells.Columns.Count;//得到列数//取得数据范围区域?(不包括标题列)?????????Range?rng?=?ws.Cells.get_Range(“B“,?“B“?+?rowsint);???//itemRange?rng?=?ws.Cells.get_Range(“K“,?“K“?+?rowsint);?//Customer????????object)rng.Value;???//get?range’s?value????????object)rng.Value;???????????//将新值赋给一个数组????????string;????????for?(int?i?=?;?i?《=?rowsint-;?i++)????????{????????????//Item_Code列????????????arry.ToString();????????????//Customer_Name列????????????arry.ToString();????????}????????Response.Write(arry);????}?????excel.Quit();?excel?=?null;????Process?procs?=?Process.GetProcessesByName(“excel“);foreach?(Process?pro?in?procs)????{????????pro.Kill();//没有更好的方法,只有杀掉进程????}????GC.Collect();}

  ⑾方法三:将EXCEL文件转化成CSV(逗号分隔的文件,用文件流读取(等价就是读取一个txt文本文件)。

  ⑿先引用命名空间:using?System.Text;和using?System.IO;

  ⒀FileStream?fs?=?new?FileStream(“d:\Customer.csv“,?FileMode.Open,?FileAess.Read,?FileShare.None);StreamReader?sr?=?new?StreamReader(fs,?System.Text.Encoding.GetEncoding());string?str?=?““;string?s?=?Console.ReadLine();while?(str?!=?null){????str?=?sr.ReadLine();?????string;?????xu?=?str.Split(’,’);?????string?ser?=?xu;??????string?dse?=?xu;????????????????if?(ser?==?s)?????{?Console.WriteLine(dse);break;?????}}???sr.Close();另外也可以将数据库数据导入到一个txt文件,实例如下:?//txt文件名?string?fn?=?DateTime.Now.ToString(“yyyyMMddHHmmss“)?+?“-“?+?“PO“?+?“.txt“;OleDbConnection?con?=?new?OleDbConnection(conStr);??con.Open();?string?sql?=?“select?ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM?from?TSD_PO“;????????//OleDbmand?my?=?new?OleDbmand(“select?*?from?TSD_PO“,?mycon);?//OleDbDataReader?myreader?=?my.ExecuteReader();?//也可以用Reader读取数据?DataSet?ds?=?new?DataSet();?OleDbDataAdapter?oda?=?new?OleDbDataAdapter(sql,?con);?oda.Fill(ds,?“PO“);?DataTable?dt?=?ds.Tables;FileStream?fs?=?new?FileStream(Server.MapPath(“download/“?+?fn),?FileMode.Create,?FileAess.ReadWrite);?StreamWriter?strmWriter?=?new?StreamWriter(fs);????//存入到文本文件中?//把标题写入.txt文件中??//for?(int?i?=?;?i?《dt.Columns.Count;i++)?//{?//????strmWriter.Write(dt.Columns.ColumnName?+?“?“);?//}foreach?(DataRow?dr?in?dt.Rows)?{?????string?str,?str,?str,?str;?????string?str?=?“|“;?//数据用“|“分隔开?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString();?????str?=?dr.ToString().Trim();?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.Write(str);?????strmWriter.WriteLine();?//换行?}?strmWriter.Flush();?strmWriter.Close();?if?(con.State?==?ConnectionState.Open)?{?????con.Close();?}

  ⒁c语言怎么获得excel表格的列长

  ⒂先要确定你使用哪个框架来操作EXCEL,aspose、NPOI都很好用,你先每列的第一个单元格检查是否有数据,如果没有就终止检查,找到第一个单元格是非空的那些列以后,再逐行的单元格检查,看那些行没有数据,检查到单元格为空就退出当前列

  ⒃c语言能对EXCEL数据进行操作吗

  ⒄可以啊,你要明白任何语言,程序包括操作系统,都是在C语言的基础上开发的。

  ⒅#include?《stdio.h》????void?writeExcel(void?)?{????????????FILE?*fp?=?NULL;??????int?t;??????char?ch;????????fp?=?fopen(“F:\test.xls“,?“w“);????????????for?(int?i?=?;?i?《?;?i++)?{??????????printf(“please?input:“);??????????scanf(“%d?%c“,?&t,?&ch);??????????fprintf(fp,?“%d %c

  ⒆“,?t,?ch);??????}??????fclose(fp);????}????int?main()?{????????writeExcel();????????return?;??}

您可能感兴趣的文章:

相关文章