首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

高分急求C# DS导入Excel并打印的源码!解决思路

2012-03-07 
高分急求C# DS导入Excel并打印的源码!!!!!!!!!!高人们来啊[解决办法]google搜一下,网上很多[解决办法]恩,

高分急求C# DS导入Excel并打印的源码!!!!!!!!!!
高人们来啊

[解决办法]
google搜一下,网上很多
[解决办法]
恩,有空我也写篇操作EXCEL的文章放到BLOG上去,节本上.net对EXCEL的操作都可以根据记录相关操作的宏来实现
[解决办法]
/// <summary>
2 /// 从DataSet导出到Excel中
3 /// </summary>
4 /// <param name= "ds "> 要导出的DataSet </param>
5 /// <param name= "strExcelFileName "> 要导出的文件名 </param>
6 public static void OutputToExcel(DataSet ds,string strFileName)
7 {
8 int iIndex = 0;
9 try
10 {
11 if (System.IO.File.Exists(strFileName))
12 {
13 System.IO.File.Delete(strFileName);
14 }
15 if (strFileName.Length == 0)
16 {
17 throw(new Exception( "路径为空! "));
18 }
19 //****************************************************************************
20 //保存以前打开的Excel进程的ID号
21 //****************************************************************************
22 int[] processid = new int[System.Diagnostics.Process.GetProcesses().Length];
23 foreach(Process process in System.Diagnostics.Process.GetProcesses())
24 {
25 if (process.ProcessName.ToUpper().Equals( "EXCEL "))
26 {
27 processid[iIndex] = process.Id;
28 iIndex++;
29 }
30 }
31 //*****************************************************************************
32 //新建一个Excel进程
33 //*****************************************************************************
34 Excel.Application myExcel;
35 try
36 {
37 // myExcel = new Excel.Application();
38 myExcel = new Excel.ApplicationClass();
39 }
40 catch(System.Exception)
41 {
42 throw(new Exception( "请检查本机器是否安装 Excel! "));
43 }
44 //*****************************************************************************
45 //找出程序新建的Excel进程的ID号
46 //*****************************************************************************
47 bool bHaveWord = false;
48 foreach(Process process in System.Diagnostics.Process.GetProcesses())
49 {
50 if (process.ProcessName.ToUpper().Equals( "EXCEL "))
51 {
52 int Count = 0;
53 for(int i = 0;i < processid.Length;i++)
54 {
55 if(process.Id != processid[i])
56 {
57 Count++;
58 }
59 if(Count == processid.Length)
60 {
61 bHaveWord = true;
62 iIndex = process.Id;


63 }
64 }
65 }
66 }

[解决办法]
最简单的办法,ds绑定到gridview,导出gridview到excel
Response.Charset = "gb2312 ";
Response.ClearContent();
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader( "Content-Disposition ", "attachment;filename= " + HttpUtility.UrlEncode( "text.xls ", Encoding.UTF8).ToString());
Response.ContentType = "application/ms-excel ";
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
//重载以下方法,否则会报错
public override void VerifyRenderingInServerForm(Control control)
{
}
[解决办法]
你可以上网下报表工具 实在不想下 还可以通过提取excel模板的xml源码 然后通过ds生成一部分字节流 代替 模板里面的一部分xml源码 这样速度更快 而且更灵活 现在没法给你写出来
[解决办法]
打印
Excel.Application excel = new Excel.Application();
excel.Worksheets.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
[解决办法]
添加引用啊

热点排行