delphi如何批量导出excel表的数据到数据库

delphi如何批量导出excel表的数据到数据库,第1张

如果只是用excel来显示的话 可以用csv 文件代替 “,”分割开字段内容就可以了,数据导入导出都比较方便

var

sl:Tstringlist;

tmpstr:string;

i:integer;

begin

sl:=TstringlistCreate;

slClear;

queryclose;

querysqltext:='select from mytablename where 1=1 ';

queryopen;

queryfirst;

while not queryeof do

begin

tmpstr:='';

//字段固定的话也可以,更具数据类型逐个设置

for i:=0 to queryFieldCount-1 do

begin

if tmpstr='' then

tmpstr:=queryFields[i]AsString

else

tmpstr:=tmpstr+','+queryFields[i]AsString;

end;

sladd(tmpstr);

querynext;

end;

queryclose;

slSaveToFile('c:\aaacsv');

{

//保存文件到当前程序目录下

slSaveToFile(sysutilsExtractFilePath(applicationExeName)+'aaacs');

}

slfree;

end;

手头没有delphi,不知道能不能编译过去,方法可以参考一下

如果数据量不大的话可以使用导出到excel功能,然后在目标库中在通过excel导入数据,如果数据量大的就要使用数据库自身的导出功能了,到处以后会生成一个特定的文件,你可以在目标库中导入这个文件。

namespace WindowsApplication2{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){//测试,将excel中的sheet1导入到sqlserver中

string connString = server=localhost;uid=sa;pwd=sqlgis;database=master;

SystemWindowsFormsOpenFileDialog fd = new OpenFileDialog();

if (fdShowDialog() == DialogResultOK){TransferData(fdFileName, sheet1″, connString);}}public void TransferData(string excelFile, string sheetName, string connectionString){DataSet ds = new DataSet();try{//获取全部数据

string strConn = Provider=MicrosoftJetOLEDB40; + Data Source= + excelFile + ; + Extended Properties=Excel 80;;

OleDbConnection conn = new OleDbConnection(strConn);

connOpen();

string strExcel = ;

OleDbDataAdapter myCommand = null;

strExcel = stringFormat(select from [{0}$], sheetName);

myCommand = new OleDbDataAdapter(strExcel, strConn);

myCommandFill(ds, sheetName);

//如果目标表不存在则创建

string strSql = stringFormat(if object_id(’{0}’) is null create table {0}(, sheetName);

foreach (SystemDataDataColumn c in dsTables[0]Columns){strSql += stringFormat([{0}] varchar(255),, cColumnName);}strSql = strSqlTrim(’,') + );

using (SystemDataSqlClientSqlConnection sqlconn = new SystemDataSqlClientSqlConnection(connectionString)){sqlconnOpen();

SystemDataSqlClientSqlCommand command = sqlconnCreateCommand();

commandCommandText = strSql;

commandExecuteNonQuery();

sqlconnClose();}//用bcp导入数据

using (SystemDataSqlClientSqlBulkCopy bcp = new SystemDataSqlClientSqlBulkCopy(connectionString)){bcpSqlRowsCopied += new SystemDataSqlClientSqlRowsCopiedEventHandler(bcp_SqlRowsCopied);

bcpBatchSize = 100;//每次传输的行数

bcpNotifyAfter = 100;//进度提示的行数

bcpDestinationTableName = sheetName;//目标表

thisUpdate();}}}上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。

导出Excel表格数据如下:

1, 登录到数据库 SQL Server 2008 中,‘’表示local的意思。

2,在需要 *** 作的数据库上右键之后选择任务再之后导出数据功能,例子中以DB_Test数据库做演示。

3,进入SQL Server 2008的数据导入与导出向导,之后点击下一步(next)。

4,选择服务器名称为local,例子中是'',数据库为DB_Test。实际中以真实数据库为主,以上只是演示实例,之后点击下一步。

5, 选择导出的目标为Excel,数据库为默认值即可,选择Excel的文件路径之后点击下一步按钮继续 *** 作。

6, 下一个页面采用默认设置,之后点击下一步按钮。选择数据库中即将要导出数据的具体表,可以通过预览按钮查看数据,之后点击下一步按钮。

7,之后点击下一步,再之后选择立即运行按钮与下一步。再点击完成按钮,最后点击关闭按钮即可。

8, 最后,打开我们的Excel表格文件,验证数据,可以看,已经有数据了,这样SQL Server 2008已经正确导出数据来了。

以上就是关于delphi如何批量导出excel表的数据到数据库全部的内容,包括:delphi如何批量导出excel表的数据到数据库、如何批量将一个数据库数据批量导出, 然后批量导入另一数据库、转载:如何将Excel数据批量导入SQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9761457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存