用C#替换宏,实现动态创建Excel下拉框及批注
2009-12-14 16:47
405 查看
//添加引用对应的Excel命名空间
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Excel = Microsoft.Office.Interop.Excel;
using System.Diagnostics;
namespace windows1
{
public partial class newtest : DevExpress.XtraEditors.XtraForm
{
public newtest()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
KillProcess("Excel");//首先杀死进程
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
Microsoft.Office.Interop.Excel.Range range = worksheet.Cells;
Excel.Range ran = range.get_Range("A5", "A5");
ran.AddComment("批注");
Excel.Range ran1 = worksheet.Columns.get_Range("H:H", Type.Missing);//或者.get_Range("D1", "D1").get_Resize(50,1);//获取一整列D,行数为50
ran1.Validation.Delete();//有无都可以
ran1.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Type.Missing, "1,2,3", Type.Missing);
//填充值
worksheet.Cells[1, 1] = "姓名";
worksheet.Cells[1, 2] = "年龄";
worksheet.Cells[1, 3] = "性别";
worksheet.Cells[2, 1] = "张三";
worksheet.Cells[2, 2] = "14";
worksheet.Cells[2, 3] = "男";
workbook.SaveCopyAs("E://tt.xls");
workbook.Saved = true;
xlApp.Visible = true;
// ran1.Validation.Modify(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Type.Missing, "4,3,2", Type.Missing);//用此法方(Modify)可以对前面的下拉框进行修改,
}
//杀死进程
private void KillProcess(string processName)
{
//获得进程对象,以用来操作
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
//获得需要杀死的进程名
foreach (Process thisproc in Process.GetProcessesByName(processName))
{
//立即杀死进程
thisproc.Kill();
}
}
catch (Exception Exc)
{
throw new Exception("", Exc);
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Excel = Microsoft.Office.Interop.Excel;
using System.Diagnostics;
namespace windows1
{
public partial class newtest : DevExpress.XtraEditors.XtraForm
{
public newtest()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
KillProcess("Excel");//首先杀死进程
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
Microsoft.Office.Interop.Excel.Range range = worksheet.Cells;
Excel.Range ran = range.get_Range("A5", "A5");
ran.AddComment("批注");
Excel.Range ran1 = worksheet.Columns.get_Range("H:H", Type.Missing);//或者.get_Range("D1", "D1").get_Resize(50,1);//获取一整列D,行数为50
ran1.Validation.Delete();//有无都可以
ran1.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Type.Missing, "1,2,3", Type.Missing);
//填充值
worksheet.Cells[1, 1] = "姓名";
worksheet.Cells[1, 2] = "年龄";
worksheet.Cells[1, 3] = "性别";
worksheet.Cells[2, 1] = "张三";
worksheet.Cells[2, 2] = "14";
worksheet.Cells[2, 3] = "男";
workbook.SaveCopyAs("E://tt.xls");
workbook.Saved = true;
xlApp.Visible = true;
// ran1.Validation.Modify(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertStop, Type.Missing, "4,3,2", Type.Missing);//用此法方(Modify)可以对前面的下拉框进行修改,
}
//杀死进程
private void KillProcess(string processName)
{
//获得进程对象,以用来操作
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
//获得需要杀死的进程名
foreach (Process thisproc in Process.GetProcessesByName(processName))
{
//立即杀死进程
thisproc.Kill();
}
}
catch (Exception Exc)
{
throw new Exception("", Exc);
}
}
}
}
相关文章推荐
- 用C#替换宏,实现动态创建Excel下拉框及批注
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- C#使用EPPlus.dll动态库在一般处理程序中实现将datatable导出到excel
- C#实现Excel动态生成PivotTable
- C# 动态生成Excel,可实现冻结窗口等其他Excel扩展
- Excel-用OFFSET和COUNTA实现动态增加下拉列表
- 用C#创建Excel,添加下拉框列,并动态给下拉框赋值
- C#实现插件的“动态替换”
- Excel-用OFFSET和COUNTA实现动态增加下拉列表
- C#动态给EXCEL列添加下拉选项
- C# 中的动态创建组件(属性及事件)的实现思路及方法
- Excel-用OFFSET和COUNTA实现动态增加下拉列表
- C# 使用反射实现根据名称动态创建窗体的几种方法
- c#动态设置combobox控件下拉项宽度以实现下拉项文字可以完全显示。
- (二)C#使用DsoFramer操作Excel实现查找、替换的功能
- Excel-用OFFSET和COUNTA实现动态增加下拉列表
- C#通过反射来动态创建类对象并调用相关泛型函数(Excel数据自动导入到SQL Server数据库)
- C#在运行时动态创建类型的实现方法
- C#利用XML创建Excel文档的实现方法
- JS操作select下拉框动态变动(创建/删除/获取)