主页 > 办公自动化 > Delphi中操作Excel时候的内存问题

Delphi中操作Excel时候的内存问题

2022-12-13 04:41来源:m.sf1369.com作者:宇宇

一、Delphi中操作Excel时候的内存问题

WorkBook:=CreateOleObject('Excel.Sheet');

WorkBook:=ExcelApp.WorkBooks.Open(ExcelFilePath)

这样做等于把CreateOleObject('Excel.Sheet');的返回值丢掉了,那这个对象就一直不会释放。。

二、如何用excel连接Microsoft Visual Studio 2008

/*

* Created by SharpDevelop.

* User: zt

* Date: 2011-1-27

* Time: 11:04

*

* To change this template use Tools | Options | Coding | Edit Standard Headers.

*/

private void btnImport DataSet ds = ImportFromExcel(ExcelF DataTable dt = ds.Table {

string nto T_Region (RegionShortName,RegionFullNam lName,

@DisplayOrder);

)

{

Messag}

}

public static ArrayList GetExcelTables( DataTable dt = new DataTable();

Arr

if (File. using (OleDbConnection conn = neft.Jet. + OLEDB.4.0;Extended Proe= + FilePath))

{

conn.Open();

aGuid.Tables, new object[] { null, null, nul }

catch (Exception ex)

MessageBox.Show(ex.Message);

}

}

return TablesList;

三、python如何简单读取excel内容

import win32com.client as win32from win32com.client import Dispatch,constantsdef readFiles(FilePath): rtn_list=[] app=Excel xl=win32.gencache.EnsureDispatch(%s.Application % app) if os.path.isfile(FilePath): ss=xl.Workbooks.Open(FilePath) sh=ss.Sheets(1) xl.Visible=False row=sh.UsedRange.Rows.Count col=sh.UsedRange.Columns.Count for r in range(1,row,1): row=[] for c in range(1,col,1): row.append(sh.Cells(r,c).Value) rtn_list.append(row) ss.Close(False) xl.Application.Quit() print rtn_list

四、c#读取excel文件如何跳过隐藏数据

将excel读取用table对象接收,遍历时,将table的某一行或列对象隐藏的数据设为空字符串

五、sql server怎么导入excel

方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作。

openFileDialog = new OpenFileDialog();  

openFileDialog.Filter = Excel files(*.xls)|*.xls;  

if(openFileDialog.ShowDialog()==DialogResult.OK)  

{  

    FileInfo fileInfo = new FileInfo(openFileDialog.FileName);  

    string filePath = fileInfo.FullName;  

    string connExcel = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + filePath + ;Extended Properties=Excel 8.0;  

    try 

    {  

        OleDbConnection oleDbConnection = new OleDbConnection(connExcel);  

        oleDbConnection.Open();  

        //获取excel表  

        DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  

        //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素  

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

        tableName = [ + tableName.Replace(',) + ];  

        //利用SQL语句从Excel文件里获取数据  

        //string query = SELECT classDate,classPlace,classTeacher,classTitle,classID FROM  + tableName;  

        string query = SELECT 日期,开课城市,讲师,课程名称,持续时间 FROM  + tableName;  

        dataSet = new DataSet();  

        //OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection);  

        //OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);  

        OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);  

        oleAdapter.Fill(dataSet,gch_Class_Info);  

        //从excel文件获得数据后,插入记录到SQL Server的数据表

        DataTable dataTable1 = new DataTable();  

        SqlDataAdapter sqlDA1 = new SqlDataAdapter(@SELECT classID, classDate,  

classPlace, classTeacher, classTitle, durativeDate FROM gch_Class_Info,sqlConnection1);  

        //SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);  

        sqlDA1.Fill(dataTable1);  

        foreach(DataRow dataRow in dataSet.Tables[gch_Class_Info].Rows)  

        {  

            DataRow dataRow1 = dataTable1.NewRow();  

            dataRow1[classDate] = dataRow[日期];  

            dataRow1[classPlace] = dataRow[开课城市];  

            dataRow1[classTeacher] = dataRow[讲师];  

            dataRow1[classTitle] = dataRow[课程名称];  

            dataRow1[durativeDate] = dataRow[持续时间];  

            dataTable1.Rows.Add(dataRow1);  

        }  

        Console.WriteLine(新插入  + dataTable1.Rows.Count.ToString() +  条记录);  

        sqlDA1.Update(dataTable1);  

        oleDbConnection.Close();  

    }  

    catch(Exception ex)  

    {  

        Console.WriteLine(ex.ToString());  

    }  

}方案二: 直接通过SQL语句执行SQL Server的功能函数将Excel文件转换到SQL Server数据库。

OpenFileDialog openFileDialog = new OpenFileDialog();  

openFileDialog.Filter = Excel files(*.xls)|*.xls;  

SqlConnection sqlConnection1 = null;  

if(openFileDialog.ShowDialog()==DialogResult.OK)  

{  

    string filePath = openFileDialog.FileName;  

    sqlConnection1 = new SqlConnection();  

    sqlConnection1.ConnectionString = server=(local);integrated security=SSPI;initial catalog=Library;  

    //import excel into SQL Server 2000  

    /*string importSQL = SELECT * into live41 FROM OpenDataSource + 

        ('Microsoft.Jet.OLEDB.4.0','Data Source= + \ + E:\\022n.xls + \ +   

        ; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet1$];*/ 

    //export SQL Server 2000 into excel  

    string exportSQL = @EXEC master..xp_cmdshell  

'bcp Library.dbo.live41 out  + filePath + -c -q -S + \ + \ +  

         -U + \ + \ +  -P + \ + \ + \';  

    try 

    {  

        sqlConnection1.Open();  

        //SqlCommand sqlCommand1 = new SqlCommand();  

        //sqlCommand1.Connection = sqlConnection1;  

        //sqlCommand1.CommandText = importSQL;  

        //sqlCommand1.ExecuteNonQuery();  

        //MessageBox.Show(import finish!);  

        SqlCommand sqlCommand2 = new SqlCommand();  

        sqlCommand2.Connection = sqlConnection1;  

        sqlCommand2.CommandText = exportSQL;  

        sqlCommand2.ExecuteNonQuery();  

        MessageBox.Show(export finish!);  

    }  

    catch(Exception ex)  

    {  

        MessageBox.Show(ex.ToString());  

    }  

}  

if(sqlConnection1!=null)  

{  

    sqlConnection1.Close();  

    sqlConnection1 = null;  

}方案三: 通过到入Excel的VBA dll,通过VBA接口获取Excel数据到DataSet

OpenFileDialog openFile = new OpenFileDialog();  

openFile.Filter = Excel files(*.xls)|*.xls;  

ExcelIO excelio = new ExcelIO();  

if(openFile.ShowDialog()==DialogResult.OK)  

{  

    if(excelio!=null)  

        excelio.Close();  

    excelio = new ExcelIO(openFile.FileName);  

    object[,] range = excelio.GetRange();  

    excelio.Close();  

    DataSet ds = new DataSet(xlsRange);  

    int x = range.GetLength(0);  

    int y = range.GetLength(1);  

    DataTable dt = new DataTable(xlsTable);  

    DataRow dr;  

    DataColumn dc;  

    ds.Tables.Add(dt);  

    for(int c=1; c<=y; c++)  

    {  

        dc = new DataColumn();  

        dt.Columns.Add(dc);  

    }  

    object[] temp = new object[y];  

    for(int i=1; i<=x; i++)  

    {  

        dr = dt.NewRow();  

        for(int j=1; j<=y; j++)  

        {  

            temp[j-1] = range[i,j];  

        }  

        dr.ItemArray = temp;  

        ds.Tables[0].Rows.Add(dr);  

    }  

    dataGrid1.SetDataBinding(ds,xlsTable);  

    if(excelio!=null)  

        excelio.Close();  

}

相关推荐

企业办公软件都有哪些?

办公自动化 2024-01-14

数控车床自动编程用什么软件?

办公自动化 2024-01-12

写字间物业管理方案

办公自动化 2023-12-09

自动化的好处和坏处

办公自动化 2023-12-05

单片机有什么特征?

办公自动化 2023-11-27

excel2007教程|excel2007教程下载

办公自动化 2023-11-22