blue_maple/
共1个网摘 [
1 ] |
访问blue_maple的个人空间
blue_maple收录,使用标签:Data, Table, To, Excel,时间:2008-6-25 15:00:26 | 相关网摘,我也收藏
把Excel当数据源,对Excel格式的控制,显得很不灵活.
楼主可以用批量写入的方法,这种方式非常快:
先把数据填充到一个二维数组,再将二维数组填充到RANGE.
示例代码:
C# code
Excel.Application xApp = new Excel.ApplicationClass();
string[,] strs = new string[9, 9];
for(int i = 0; i < 9; i++)
for(int j = 0; j < 9; j++)
strs[i, j] = Convert.ToString((i + 1) * (j + 1));
Excel.Workbook xBook = xApp.Workbooks.Add(Missing.Value);
Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Worksheets[1];
xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[9, 9]).Value = strs;
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
zhiguo2008
随风飘动
等级:
发表于:2008-06-10 14:03:4211楼 得分:0
我测试七楼兄弟的代码时,发现代码执行到第一个 mOleCom.ExecuteNonQuery(); 创建表时报错:
System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎找不到对象'CustomerGoodsTable'。请确定对象是否存在,并正确地写出它的名称和路径。
"ustomerGoodsTable" 为我要创建的工作表. "path"是我的Excel文件路径. 测试代码中是"D:\\项目\\ProjectERP\\App_Data\\2008年-6月-10日成品报表.xls"
能否看一看这代码?
C# codeprivate void generateExcelTable(DataTable tb,String path)
{
try
{
String mCnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
OleDbConnection mOleCnn = new OleDbConnection(mCnnStr );
OleDbCommand mOleCom = new OleDbCommand();
mOleCom.Connection = mOleCnn ;
mOleCom.Connection.Open();
string columnStr = "CREATE TABLE "+tb.TableName+"("; // 创建表,表名字为sheet1,你可以更改,就是在xls中看到的名字。
foreach (DataColumn name in tb.Columns)
{
// 此处的columnStr是拼接出标准的Create Table语句,其中的name是列的名字,varchar是列的类型
if (tb.Columns.IndexOf(name) == tb.Columns.Count - 1)//如果为最后一列,则不要添加","号;
{
columnStr += "["+name.ColumnName + "] varchar";
continue;
}
columnStr += "["+name.ColumnName + "] varchar,";
}
columnStr += ")";
mOleCom.CommandText = columnStr ;//让其执行Create语句,创建出表来
mOleCom.ExecuteNonQuery();
mOleCom.Parameters.Clear();
/*此处需要你需要创建一个OleDbParameterCollection对象,此对象就是你table中的数据,只需要在此处将table中的每一个row中对应的数据填入相应的位置就可以了。比如
paramColl[name].Value = value,此处value就是datable中指定行,指定列的数据值
*/
OleDbParameterCollection paramColl = mOleCom.Parameters;
foreach(DataRow row in tb.Rows)
{
foreach (DataColumn name in tb.Columns)
{
paramColl[name.ColumnName].Value = row[name];
}
}
//拼接完成OleDbParameterCollection对象后,执行mOleCom,这样就可以经DataTable中的一行数据写入xls中。
mOleCom.ExecuteNonQuery();
}
catch(Exception ex)
{
}
}
http://topic.csdn.net/u/20080610/11/60d4e908-f2b6-47fa-bf54-f5a4155bebfa.html
共1个网摘 [
1 ]