
如果只是用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数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)