高分求C#调用Excel打印程序源码,不够再可以加分! 主要实现对指定Excel文件的打印(调用出打印预览这个的一个界面) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 upup,以前用vb写过,好像挺简单的 /// <summary> /// 将DataSet里所有数据导入Excel. /// 需要添加COM: Microsoft Excel Object Library. /// using Excel; /// </summary> /// <param name="filePath"></param> /// <param name="ds"></param> public static void ExportToExcel(string filePath, DataSet ds) { 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); 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(); } }打印预览:xlWorksheet.PrintPreview(oMissing); 打印:xlWorksheet.PrintOut(oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);你根据需要,自己加上吧 只要调某个Excel,的某个sheet页的打印的话就更简单了。public static void InvokeExcelPrint(string strFilePath, string strSheetName) { Excel.ApplicationClass xlApp = new ApplicationClass(); Excel.Workbooks xlWorkbooks; Excel.Workbook xlWorkbook; Excel.Worksheet xlWorksheet; System.Type tyWorkbooks; System.Reflection.MethodInfo[] methods; object objFilePath; object oMissing = System.Reflection.Missing.Value; if( !System.IO.File.Exists(strFilePath) ) throw new System.IO.FileNotFoundException(); try { xlApp.Visible = true; xlWorkbooks = xlApp.Workbooks; tyWorkbooks = xlWorkbooks.GetType(); methods = tyWorkbooks.GetMethods(); objFilePath = strFilePath; xlWorkbook = (Excel.Workbook)tyWorkbooks.InvokeMember( "Open", System.Reflection.BindingFlags.InvokeMethod, null, xlWorkbooks, new object[] {objFilePath, true, true} ); xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets[strSheetName]; xlWorksheet.PrintPreview(true); xlWorkbook.Close(oMissing, oMissing, oMissing); } catch(Exception ex) { throw ex; } finally { if( xlApp != null) { xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); xlApp = null; } GC.Collect(); } } 不对已经存在的Excel文件打印,strSheetName我应该要输入什么? 我对已经存在的Excel文件打印,strSheetName我应该要输入什么? http://community.csdn.net/Expert/topic/3933/3933439.xml?temp=.6784632我可以给你这个组件。我自己封装的 看到你的信了,可是给你回信总是失败,你的邮箱有设置吧。呵呵。加我的MSN吧。给你发过去 你的Msn多少,我的是[email protected]邮箱现为:[email protected]谢谢 小弟问下——程序部署——方面的基本问题 在页面上动态添加控件的问题 QQ是如何实现传送信息的几个问题 关于form上datagrid事件的问题.高手请进 存储过程中得@@Error问题 调用printPreviewDialog对话框时候,如何触发它的最大化按钮事件? 怎么取消Treeview节点选中时蓝色背景 登录跳转问题.谢谢! 數據庫性能問題 用.NET开发环境开发的windows应用程序能否脱离.NET环境独立运行? 怎么获取和设置客户端上的滚动条的值--高手请进。 不能获得datagrid中编辑后的数据????
/// 将DataSet里所有数据导入Excel.
/// 需要添加COM: Microsoft Excel Object Library.
/// using Excel;
/// </summary>
/// <param name="filePath"></param>
/// <param name="ds"></param>
public static void ExportToExcel(string filePath, DataSet ds)
{
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);
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();
}
}打印预览:xlWorksheet.PrintPreview(oMissing);
打印:xlWorksheet.PrintOut(oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);
你根据需要,自己加上吧
{
Excel.ApplicationClass xlApp = new ApplicationClass();
Excel.Workbooks xlWorkbooks;
Excel.Workbook xlWorkbook;
Excel.Worksheet xlWorksheet;
System.Type tyWorkbooks;
System.Reflection.MethodInfo[] methods;
object objFilePath; object oMissing = System.Reflection.Missing.Value; if( !System.IO.File.Exists(strFilePath) )
throw new System.IO.FileNotFoundException();
try
{
xlApp.Visible = true;
xlWorkbooks = xlApp.Workbooks;
tyWorkbooks = xlWorkbooks.GetType();
methods = tyWorkbooks.GetMethods();
objFilePath = strFilePath;
xlWorkbook = (Excel.Workbook)tyWorkbooks.InvokeMember( "Open",
System.Reflection.BindingFlags.InvokeMethod,
null,
xlWorkbooks,
new object[] {objFilePath, true, true} );
xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets[strSheetName];
xlWorksheet.PrintPreview(true);
xlWorkbook.Close(oMissing, oMissing, oMissing);
}
catch(Exception ex)
{
throw ex;
}
finally
{
if( xlApp != null)
{
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
}
GC.Collect();
}
}
邮箱现为:[email protected]
谢谢