一点点经验(转载)2

   21.  
  怎样把 DataGrid 的数据导出到 Excel 以供打印?  
  之前已经为 DataGrid 设置了 TableStyle ,即自定义了列标题和要显示的列,如果想以自定义的视图导出数据该怎么办?  
  把数据导出到 Excel 后,怎样为它设置边框啊?   
  怎样使从 DataGrid 导出到 Excel 的某个列居中对齐?  
  数据从 DataGrid 导出到 Excel 后,怎样使标题行在打印时出现在每一页?   
 DataGrid 数据导出到 Excel 后打印时每一页显示 当前页 / 共几页 ,怎样实现?   

:
  private void button1_Click(object sender, System.EventArgs e) 
 {    
int row_index, col_i
ndex;    
row_index = 1;    
col_index = 1;    
Excel.ApplicationClass excel = new Excel.ApplicationClass();    
excel.Workbooks.Add(true);                    
DataTable dt = ds.Tables["table"];                    
foreach(DataColumn dcHeader in dt.Columns)       
 excel.Cells[row_index, col_index++] = dcHeader.ColumnName;              
foreach(DataRow dr in dt.Rows)    
{
      col_index = 0;
          foreach(DataColumn dc in dt.Columns)          
{            excel.Cells[row_index+1, col_index+1] = dr[dc]; 
           col_index++;          
}      
row_index++;      }
      excel.Visible = true;      }  
private void Form1_Load(object sender, System.EventArgs e) 
 {  
    SqlConnection conn = new SqlConnection("server=tao;uid=sa;pwd=;database=pubs" ;  
    conn.Open();  
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", conn);  
    ds = new DataSet();
    da.Fill(ds, "table"
    dataGrid1.DataSource = ds;  
    dataGrid1.DataMember = "table"; 
 } 

 
data Grid1.TableStyles[0].GridColumnStyles[index].HeaderText;//index 可以从 0~dataGrid1.TableStyles[0].GridColumnStyles.Count 遍历。  

 
 Excel.Range range;  
   range=worksheet.get_Range(worksheet.Cells[1,1],xSt.Cells[ds.Tables[0].Rows.Count+1,ds.Tables[0].Columns.Coun
t]);  
   range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;
   range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;
  range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
  range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

  
 range.Horizontal Alignment = Excel.XlHAlign.xlHAlignCenter
  
 worksheet.PageSetup.PrintTitleRows = " 1: 1";
  
 worksheet.PageSetup.CenterFooter = " &P  /  &N ";

  22.
当把 DataGrid Cell 内容赋值到 Excel 的过程中想在 DataGrid CaptionText 上显示进度,但不显示。 WHY
  ...  dataGrid1.CaptionText = "
正在导出: " + (row + 1) + "/" + row_cnt;
  System.Windows.Forms.Application.DoEvents();
  ...  
处理当前在消息队列中的所有 Windows 消息。
  
当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。如果在代码中调用 DoEvents, 则应用程序可以处理其他事件。
  
如果从代码中移除 DoEvents ,那么在按钮的单机事件处理程序执行结束以前,窗体不会重新绘制。通常在循环中使用该方法来处理消息。

  23.
怎样从 Flash 调用外部程序,如一个 C# 编译后生成的 .exe?  fscommand("exec", " 应用程序 .exe" ;
  
  必须把 flash 发布为 .exe
  
  必须在 flash 生成的 .exe 文件所在目录建一个名为 fscommand 的子目录,并把要调用的可执行程序拷贝到那里。

  24.
有没有办法用代码控制 DataGrid 的上下、左右的滚动?
  dataGrid1.Select();
  SendKeys.Send("{PGUP}" ;
  SendKeys.Send("{PGDN}" ;
  SendKeys.Send("{^{LEFT}" ; // Ctrl+
左方向键
  SendKeys.Send("{^{RIGHT}" ; // Ctrl+
右方向键

  25.
怎样使两个 DataGrid 绑定两个主从关系的表?
  DataGrid1.DataSource = ds;
  DataGrid1.DataMember = "
母表 ";
  ...  
  DataGrid2.DataSouce = ds;
  DataGrid2.DataMember = "
母表 . 关系名 ";

  26.assembly
的版本号怎样才能自动生成?特别是在 Console 下没有通过 VStudio 环境编写程序时。
  
关键是 AssemblyInfo.cs 里的 [assembly: AssemblyVersion("1.0.*" ] ,命令行编译时包含 AssemblyInfo.cs 

 27.
怎样建立一个 Shared Assembly
  
sn.exe 生成一个 Strong Name keyfile.sn ,放在源程序目录下
  
在项目的 AssemblyInfo.cs [assembly: AssemblyKeyFile("..//..//keyfile.sn" ]
  
生成 dll 后,用 gacutil /i myDll.dll 放进 Global Assembly Cach.

  28.
Oracle 里如何取得某字段第一个字母为大写英文 A~Z 之间的记录?
  select * from table where ascii(substr(
字段 ,1,1)) between ascii('A') and ascii('Z')  29. 怎样取得当前 Assembly 的版本号?
  Process current = Process.GetCurrentProcess();
   FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(current.MainModule.FileName);
  Console.WriteLine(myFileVersionInfo.FileVersion);

  30.
怎样制作一个简单的 winform 安装程序?
  
  建一个 WinForm 应用程序,最最简单的那种。运行。
  
  添加新项目 -> 安装和部署项目, 模板 选择 安装向导
  
  连续二个 下一步 ,在 选择包括的项目输出 步骤打勾 主输出来自 ,连续两个 下一步 完成
  
  生成。
  
  到项目目录下找到 Setup.exe (还有一个 .msi .ini 文件),执行。

  31.
怎样通过 winform 安装程序在 Sql Server 数据库上建表?
  
 [ 项目 ]—[ 添加新项 ]   类别:代码;模板:安装程序类。
  
名称: MyInstaller.cs
  
  SQL Server 建立一个表,再 [ 所有任务 ]—[ 生成 SQL 脚本 ]
  
生成类似如下脚本(注意:把所有 GO 语句去掉):
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MyTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [dbo].[MyTable]
  CREATE TABLE [dbo].[MyTable] (
      [ID] [int] NOT NULL ,
      [NAME] [nchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL
        ON [PRIMARY]  ALTER TABLE [dbo].[MyTable] WITH NOCHECK ADD
       CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
       (          [ID]        ON [PRIMARY]

   
 [ 项目 ]—[ 添加现有项 ] mytable.sql—[ 生成操作 ]-[ 嵌入的资源 ]
  
  MyInstaller.cs 切换到代码视图 , 添加下列代码:
  
先增加:   using System.Reflection;  using System.IO;
  
然后:   private string GetSql(string Name)
   {
   
   try
   
   {
   
     Assembly Asm = Assembly.GetExecutingAssembly();
   
     Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);              StreamReader reader = new StreamReader(strm);
   
     return reader.ReadToEnd();
   
   }
   
   catch (Exception ex)
   
   {
   
     Console.Write("In GetSql:"+ex.Message);
   
     throw ex;
   
   }
   }

   private void ExecuteSql(string DataBaseName,string Sql)
   {
   System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection();
  sqlConn.ConnectionString = "server=myserver;uid=sa;password=;database=master";
  System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConn);
   Command.Connection.Open();
   Command.Connection.ChangeDatabase(DataBaseName); 
  try 
  {
   Command.ExecuteNonQuery();
   }
   finally
   {
   Command.Connection.Close();
   }
   }

  protected void AddDBTable(string strDBName)
   {
       try
       {
           ExecuteSql("master","create DATABASE "+ strDBName);
           ExecuteSql(strDBName,GetSql("mytable.sql" );
       }
       catch(Exception ex)
       {
           Console.Write("In exception handler :"+ex.Message);
       }
   }

   public override void Install(System.Collections.IDictionary stateSaver)
   {
       base.Install(stateSaver);
       AddDBTable("MyDB" ; //
建一个名为 MyDB DataBase
  }

  
 [ 添加新项目 ]—[ 项目类型:安装和部署项目 ]—[ 模板:安装项目 ]—[ 名称: MySetup]
  
 [ 应用程序文件夹 ]—[ 添加 ]—[ 项目输出 ]—[ 主输出 ]
  
  解决方案资源管理器 右键 —[ 安装项目 (MySetup)]—[ 视图 ]—[ 自定义操作 ] [ 安装 ]—[ 添加自定义操作 ]—[ 双击:应用程序文件夹 ] [ 主输出来自 ***( 活动 )]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值