请各位大虾赐教,本人急,谢谢了~~~
我用的是VS2005 C#
13 个解决方案
#1
用数据库的“导入导出数据”工具,先按表格中的字段建立表
再通过语句插入到要用的表中
再通过语句插入到要用的表中
#2
1.直接导入导出,哈哈.
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
///*將Excel讀到DataTable方便資料篩選*/
//OleDbConnection OleDbConn = new OleDbConnection();
//OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
//DataTable dataTable = null;
//DT = new DataTable("ExcelTable");
//OleDbConn.Open();
//dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//String SheetName = "";
//foreach (DataRow row in dataTable.Rows)
//{
// SheetName = row["TABLE_NAME"].ToString();
// break;
//}
//OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);
//OleDbDA.Fill(DT);
//OleDbConn.Close();
//dataGridView1.DataSource = DT;
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
///*將Excel讀到DataTable方便資料篩選*/
//OleDbConnection OleDbConn = new OleDbConnection();
//OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
//DataTable dataTable = null;
//DT = new DataTable("ExcelTable");
//OleDbConn.Open();
//dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//String SheetName = "";
//foreach (DataRow row in dataTable.Rows)
//{
// SheetName = row["TABLE_NAME"].ToString();
// break;
//}
//OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);
//OleDbDA.Fill(DT);
//OleDbConn.Close();
//dataGridView1.DataSource = DT;
#3
建议重命名成.csv
#4
DTS
#5
以下方法(以前我的项目里用到的)你试一下,手工写特环导出.速率我测了一下,很好.
#region 导出Excel表
/// <summary>
/// 名称:WriteToExcel
/// 功能:查询结果导出Execl
/// 编写人:
/// 编写时间:2008-11-26
/// </summary>
/// <param name="table"></param>
public void WriteToExcel(DataTable table)
{
try
{
string tempImagePath = Application.StartupPath;
string temp = tempImagePath + "\\ExeclFiles";
Directory.CreateDirectory(@temp);
string strFilePath = @Application.StartupPath + @"\ExeclFiles\" + CommonClass.CommonDateTime() + ".xls";
System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath,true, System.Text.Encoding.Default);
object[] values = new object[table.Columns.Count];
for (int i = 0; i < table.Columns.Count; ++i)
{
if (table.Columns[i].Caption.ToString() == "你的英文名字")
{
table.Columns[i].Caption = "改为中文";
}
sw.Write(table.Columns[i].Caption.ToString());
sw.Write('\t');
}
sw.Write("\r\n");
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < values.Length; ++j)
{
sw.Write(table.Rows[i][j].ToString());
sw.Write('\t');
}
sw.Write("\r\n");
}
sw.Flush();
sw.Close();
CommonClass.MessageBoxOK("成功导出[" + ds.Tables[0].Rows.Count.ToString() + "]行到Execl!");
}
catch
{
CommonClass.MessageBoxNo("导出Execl失败!");
}
}
#6
ssis
#7
我做了一个小软件 可以做到需要的联系我QQ119896930
#8
几万条数据导入EXCEL?!
⊙﹏⊙b汗
⊙﹏⊙b汗
#9
导入
SELECT *
FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')
SELECT *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]
导出
如何使用BCP导出数据
(1) 使用BCP导出整个表或视图。
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接
或
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接
#10
收藏!
#11
用BCP把,速度超级快,100多M的csv导入也不过几秒。
using (SqlBulkCopy bcp = new SqlBulkCopy(sqlConnString))
{
//一次批量的插入的数据量
bcp.BatchSize = BatchSize;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的行都会从目标表中移除
bcp.BulkCopyTimeout = BulkCopyTimeout;
//设定通知属性,以便在每插入设定条数据时,呼叫相应事件
bcp.NotifyAfter = NotifyAfter;
bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
//设置要批量写入的目标表
bcp.DestinationTableName = TableName;
//批量写入
bcp.WriteToServer(csvreader);
}
#12
excel作为数据库导入,数据大的时候,速度不怎么样把
#13
使用sql server中的导入导出。或分多sheet,使用多线程实现导入
还有SqlBulkCopy 批处理
还有SqlBulkCopy 批处理
#1
用数据库的“导入导出数据”工具,先按表格中的字段建立表
再通过语句插入到要用的表中
再通过语句插入到要用的表中
#2
1.直接导入导出,哈哈.
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
///*將Excel讀到DataTable方便資料篩選*/
//OleDbConnection OleDbConn = new OleDbConnection();
//OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
//DataTable dataTable = null;
//DT = new DataTable("ExcelTable");
//OleDbConn.Open();
//dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//String SheetName = "";
//foreach (DataRow row in dataTable.Rows)
//{
// SheetName = row["TABLE_NAME"].ToString();
// break;
//}
//OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);
//OleDbDA.Fill(DT);
//OleDbConn.Close();
//dataGridView1.DataSource = DT;
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
///*將Excel讀到DataTable方便資料篩選*/
//OleDbConnection OleDbConn = new OleDbConnection();
//OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
//DataTable dataTable = null;
//DT = new DataTable("ExcelTable");
//OleDbConn.Open();
//dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//String SheetName = "";
//foreach (DataRow row in dataTable.Rows)
//{
// SheetName = row["TABLE_NAME"].ToString();
// break;
//}
//OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);
//OleDbDA.Fill(DT);
//OleDbConn.Close();
//dataGridView1.DataSource = DT;
#3
建议重命名成.csv
#4
DTS
#5
以下方法(以前我的项目里用到的)你试一下,手工写特环导出.速率我测了一下,很好.
#region 导出Excel表
/// <summary>
/// 名称:WriteToExcel
/// 功能:查询结果导出Execl
/// 编写人:
/// 编写时间:2008-11-26
/// </summary>
/// <param name="table"></param>
public void WriteToExcel(DataTable table)
{
try
{
string tempImagePath = Application.StartupPath;
string temp = tempImagePath + "\\ExeclFiles";
Directory.CreateDirectory(@temp);
string strFilePath = @Application.StartupPath + @"\ExeclFiles\" + CommonClass.CommonDateTime() + ".xls";
System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath,true, System.Text.Encoding.Default);
object[] values = new object[table.Columns.Count];
for (int i = 0; i < table.Columns.Count; ++i)
{
if (table.Columns[i].Caption.ToString() == "你的英文名字")
{
table.Columns[i].Caption = "改为中文";
}
sw.Write(table.Columns[i].Caption.ToString());
sw.Write('\t');
}
sw.Write("\r\n");
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < values.Length; ++j)
{
sw.Write(table.Rows[i][j].ToString());
sw.Write('\t');
}
sw.Write("\r\n");
}
sw.Flush();
sw.Close();
CommonClass.MessageBoxOK("成功导出[" + ds.Tables[0].Rows.Count.ToString() + "]行到Execl!");
}
catch
{
CommonClass.MessageBoxNo("导出Execl失败!");
}
}
#6
ssis
#7
我做了一个小软件 可以做到需要的联系我QQ119896930
#8
几万条数据导入EXCEL?!
⊙﹏⊙b汗
⊙﹏⊙b汗
#9
导入
SELECT *
FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')
SELECT *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]
导出
如何使用BCP导出数据
(1) 使用BCP导出整个表或视图。
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接
或
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接
#10
收藏!
#11
用BCP把,速度超级快,100多M的csv导入也不过几秒。
using (SqlBulkCopy bcp = new SqlBulkCopy(sqlConnString))
{
//一次批量的插入的数据量
bcp.BatchSize = BatchSize;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的行都会从目标表中移除
bcp.BulkCopyTimeout = BulkCopyTimeout;
//设定通知属性,以便在每插入设定条数据时,呼叫相应事件
bcp.NotifyAfter = NotifyAfter;
bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
//设置要批量写入的目标表
bcp.DestinationTableName = TableName;
//批量写入
bcp.WriteToServer(csvreader);
}
#12
excel作为数据库导入,数据大的时候,速度不怎么样把
#13
使用sql server中的导入导出。或分多sheet,使用多线程实现导入
还有SqlBulkCopy 批处理
还有SqlBulkCopy 批处理