如何使用c#将Excel数据转换为数据表而不使用共享点excel服务进行循环? [英] How to convert Excel data to datatable without looping from share point excel service using c#?

查看:60
本文介绍了如何使用c#将Excel数据转换为数据表而不使用共享点excel服务进行循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我通过在sharepoint 2010中使用Excel服务,从excel文件(sales.xlsx)获得指定范围的数据。我必须将此excel服务数据转换为数据表而不在c#中循环。

请参考http://stackoverflow.com/questions/18888870/how-to-convert-excel-service-data-with-ranges-to-datatable-from-share-point-2010

我该怎么做?

解决方案

你可以在程序中使用ACE提供程序,并调用程序:



如何将数据从SQL导出到Excel以及标题和表属性 [ ^ ]

http://www.excel-sql-server.com /excel-import-to-sql-server-using-distributed-queries.htm [ ^ ]



请注意

从lasttable中选择*到newtable 



是你想要的好方法。


< blockquote>

 private DataTable CopyExceltoDatatable(string path,string filename)
{
string sheetname =;
DataTable dtexcel = new DataTable();
string excelConnString =Provider = Microsoft.ACE.OLEDB.12.0; OLE DB Services = -4; Data Source =+ path +\\+ filename +; Excel 12.0; HDR = Yes; IMEX = 1\" ;
使用(OleDbConnection excelConnection = new OleDbConnection(excelConnString))
{
excelConnection.Open();
//创建OleDbCommand以从Excel获取数据
DataTable Sheets = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
DataRow schemaRow = Sheets.Rows [0];
sheetname = schemaRow [TABLE_NAME]。ToString();
if(!sheetname.EndsWith(_))
{
string query =SELECT * FROM [+ sheetname +];
OleDbDataAdapter daexcel = new OleDbDataAdapter(query,excelConnection);
daexcel.Fill(dtexcel);
}
返回dtexcel;
}
}


Hi,
I have data with specified range from excel file(sales.xlsx) by using Excel service in sharepoint 2010.I have to convert this excel service data to datatable without looping in c#.
please refer http://stackoverflow.com/questions/18888870/how-to-convert-excel-service-data-with-ranges-to-datatable-from-share-point-2010"
How do I do this?

解决方案

Your can use ACE provider in a procedure, and call the procedure :

How to export data from SQL to excel along with headers and table attributes[^]
http://www.excel-sql-server.com/excel-import-to-sql-server-using-distributed-queries.htm[^]

please be noted

select * into newtable from lasttable


is a good way for what you want.


private DataTable CopyExceltoDatatable(string path, string filename)
    {
        string sheetname="";
        DataTable dtexcel = new DataTable();
        string excelConnString = "Provider=Microsoft.ACE.OLEDB.12.0;OLE DB Services=-4;Data Source=" + path +"\\"+filename + ";Excel 12.0;HDR=Yes;IMEX=1";
        using (OleDbConnection excelConnection = new OleDbConnection(excelConnString))
        {
            excelConnection.Open();
            //Create OleDbCommand to fetch data from Excel 
             DataTable Sheets = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
             DataRow schemaRow = Sheets.Rows[0];
             sheetname = schemaRow["TABLE_NAME"].ToString();
                if (!sheetname.EndsWith("_"))
                {
                    string query = "SELECT  * FROM [" + sheetname + "]";
                    OleDbDataAdapter daexcel = new OleDbDataAdapter(query, excelConnection);
                    daexcel.Fill(dtexcel);
                }
                return dtexcel;
        }
    }


这篇关于如何使用c#将Excel数据转换为数据表而不使用共享点excel服务进行循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆