| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 726 人关注过本帖
标题:利用代码生成Excel文件并写入数据
只看楼主 加入收藏
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
利用代码生成Excel文件并写入数据

jxHO1jBO.zip (8.63 KB) 利用代码生成Excel文件并写入数据




关键代码如下:

#region Export DataSet to Excel without creating new .xls file
/// <summary>
/// 将DataSet里所有数据导入Excel.
/// 需要添加COM: Microsoft Excel Object Library.
/// using Excel;
/// </summary>
/// <param name="filePath"></param>
/// <param name="ds"></param>
public static void Export2Excel0(DataSet ds, string filePath)
{
object oMissing = System.Reflection.Missing.Value;
Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
try
{
// 打开Excel文件。以下为Office 2000.
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath, oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
Excel.Worksheet xlWorksheet;
// 循环所有DataTable
for( int i=0; i<ds.Tables.Count; i++ )
{
// 添加入一个新的Sheet页。
xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);
// 以TableName作为新加的Sheet页名。
xlWorksheet.Name = ds.Tables[i].TableName;
// 取出这个DataTable中的所有值,暂存于stringBuffer中。
string stringBuffer = "";
for( int j=0; j<ds.Tables[i].Rows.Count; j++ )
{
for( int k=0; k<ds.Tables[i].Columns.Count; k++ )
{

stringBuffer += ds.Tables[i].Rows[j][k].ToString();
if( k < ds.Tables[i].Columns.Count - 1 )
stringBuffer += "\t";
}
stringBuffer += "\n";
}
// 利用系统剪切板
System.Windows.Forms.Clipboard.SetDataObject("");
// 将stringBuffer放入剪切板。
System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
// 选中这个sheet页中的第一个单元格
((Excel.Range)xlWorksheet.Cells[1,1]).Select();
// 粘贴!
xlWorksheet.Paste(oMissing,oMissing);
// 清空系统剪切板。
System.Windows.Forms.Clipboard.SetDataObject("");
}
// 保存并关闭这个工作簿。
xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
xlWorkbook = null;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// 释放...
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
GC.Collect();
}
}
#endregion




#region Export DataSet to Excel(if not exist, create .xls file)
/// <summary>
/// 执行导出,请在项目中先引用Mircorsoft Excel library 11.0
/// </summary>
/// <param name="ds">要导出的DataSet</param>
/// <param name="xlsFile">要导出的文件名</param>
private void Export2Excel1(DataSet ds, string xlsFile)
{
Excel.Application excel = new Excel.Application();

//Excel.Workbook obj = new Excel.WorkbookClass();
//obj.SaveAs("e:\\live41.xls",Excel.XlFileFormat.xlExcel9795,null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);

int rowIndex = 1;
int colIndex = 0;

excel.Application.Workbooks.Add(true);


DataTable table = ds.Tables[0];

foreach(DataColumn col in table.Columns)
{
colIndex++;
excel.Cells[1,colIndex] = col.ColumnName;
}

foreach(DataRow row in table.Rows)
{
rowIndex++;
colIndex = 0;

foreach(DataColumn col in table.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
}
}

excel.Visible = false;
excel.Cells.EntireColumn.AutoFit();
excel.ActiveWorkbook.SaveAs(xlsFile,Excel.XlFileFormat.xlExcel9795,
null,null,false,false,Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);

excel.Quit();
excel = null;

GC.Collect();//垃圾回收
}
#endregion

[此贴子已经被作者于2006-12-2 14:09:13编辑过]

搜索更多相关主题的帖子: Excel Microsoft 数据 param 文件 
2006-12-02 14:00
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
还没试,感谢分享!

2006-12-02 14:16
快速回复:利用代码生成Excel文件并写入数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016824 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved