问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求 vs2008 c# 操作EXCEL 创建一个新EXcel 并写数据的代码 跪求啊 没分了

发布网友 发布时间:2022-04-23 07:40

我来回答

2个回答

热心网友 时间:2023-10-08 14:50

#操作Excel知识点
近期在使用C#操作excel,主要是读取excel模板,复制其中的模板sheet页,生成多个sheet页填充相应数据后另存到excel文件,所用到的知识点如下。

  一、添加引用和命名空间
  添加Microsoft.Office.Interop.Excel引用,它的默认路径是C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
  代码中添加引用using Microsoft.Office.Interop.Excel;

  二、Excel类的简单介绍
  此命名空间下关于Excel类的结构分别为:
  ApplicationClass - 就是我们的excel应用程序。
  Workbook - 就是我们平常见的一个个excel文件,经常是使用Workbooks类对其进行操作。
  Worksheet - 就是excel文件中的一个个sheet页。
  Worksheet.Cells[row, column] - 就是某行某列的单元格,注意这里的下标row和column都是从1开始的,跟我平常用的数组或集合的下标有所不同。
  知道了上述基本知识后,利用此类来操作excel就清晰了很多。

  三、Excel的操作
  任何操作Excel的动作首先肯定是用excel应用程序,首先要new一个ApplicationClass 实例,并在最后将此实例释放。
  ApplicationClass xlsApp = new ApplicationClass(); // 1. 创建Excel应用程序对象的一个实例,相当于我们从开始菜单打开Excel应用程序。
  if (xlsApp == null)
  {
  //对此实例进行验证,如果为null则表示运行此代码的机器可能未安装Excel
  }

  1. 打开现有的Excel文件
  Workbook workbook = xlsApp.Workbooks.Open(excelFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  Worksheet mySheet = workbook.Sheets[1] as Worksheet; //第一个sheet页
  mySheet.Name = "testsheet"; //这里修改sheet名称

  2.复制sheet页
  mySheet.Copy(Type.Missing, workbook.Sheets[1]); //复制mySheet成一个新的sheet页,复制完后的名称是mySheet页名称后加一个(2),这里就是testsheet(2),复制完后,Worksheet的数量增加一个
  注意 这里Copy方法的两个参数,指是的复制出来新的sheet页是在指定sheet页的前面还是后面,上面的例子就是指复制的sheet页在第一个sheet页的后面。

  3.删除sheet页
  xlsApp.DisplayAlerts = false; //如果想删除某个sheet页,首先要将此项设为fasle。
  (xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Delete();

  4.选中sheet页
  (xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Select(Type.Missing); //选中某个sheet页

  5.另存excel文件
  workbook.Saved = true;
  workbook.SaveCopyAs(filepath);

  6.释放excel资源
  workbook.Close(true, Type.Missing, Type.Missing);
  workbook = null;
  xlsApp.Quit();
  xlsApp = null;

添加的文件头:
using System.Reflection; // 引用这个才能使用Missing字段
using Excel;

Excel.ApplicationClass excel = new Excel.ApplicationClass();
excel.Visible = true; //激活Excel
Workbook wBook = excel.Workbooks.Add(true);
// Worksheet wSheet = (Excel._Worksheet)wBook.ActiveSheet;
Worksheet wSheet = (Excel.Worksheet)wBook.ActiveSheet;

excel.Cells[3, 5] = "本公司电话: " + Phone;
excel.Cells[4, 5] = "本公司传真: " + Zhen;
excel.Cells[5, 5] = "联系人: " + ComName;
excel.Cells[4, 1] = "客户: " + CustomerName;
excel.Cells[5, 1] = "联系人: " + Associate;
excel.Cells[3, 8] = "户名:";
excel.Cells[3, 9] = AccountName;
excel.Cells[4, 8] = "开户行:";
excel.Cells[4, 9] = BranchName;
excel.Cells[5, 8] = "帐号:";
excel.Cells[5, 9] = "'" + AccountID;

//设置禁止弹出保存和覆盖的询问提示框
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
//保存工作薄
// wBook.Save();
//每次保存激活的表,这样才能多次操作保存不同的Excel表,默认保存位置是在”我的文档"

excel.Cells.Font.Size = 12;
excel.Cells.Font.Bold = false;
// Excel.Range m_objRange = m_objRange.get_Range(1, 3);
wSheet.get_Range(excel.Cells[1, 3], excel.Cells[1, 3]).Font.Size = 24;
wSheet.get_Range(excel.Cells[1, 3], excel.Cells[1, 3]).Font.Bold = true;
wSheet.get_Range(excel.Cells[3, 1], excel.Cells[3, 1]).Font.ColorIndex = 3;//此处设为红色,不能用Font.Color来设置颜色
// m_objRange.Cells.Font.Size = 24;
// m_objRange.Cells.Font.Bold = true;

excel.ActiveWorkbook.SaveCopyAs(filename);

excel.Quit();
代码注释部分只是简单描述各语句的原由,个别的还是值得推敲的。

语句一 Workbook wBook = excel.Workbooks.Add(true);
Workbooks.Add的参数是个object类型,通常使用true或null,表明工作簿在默认文档下创建,或者使用枚举值
XlWBATemplate.xlWBATWorksheet,但如果传入一个excel完整文件名,却相当于打开已有工作簿。

语句二 Worksheet wSheet = (Excel.Worksheet)wBook.ActiveSheet; 这样可以操作多个工作表的话,实例化之后加入到wBook.Worksheets中去。如果是打开已存在的工作簿,这条语句也可能会报错,最好是调用wBook.ActiveSheet来获取或者再加些判断。

语句三
excel.ActiveWorkbook.SaveCopyAs(filename);这两句代码至关重要,而且必不可少,否则,保存时会弹出“是否保存sheet1.xls”的对话框。判断当前激活的表,并保存这个表。

语句四 excel.Quit();
这个关闭一直有疑点,因为C#操作com非托管对象时,凭借Quit()还没有释放掉对象,excel进程不一定会终止,于是,有人使用KillProcess()来处理,我个人认为这不是一个好主意,可能会破坏其它正在执行的excel进程。目前我使用app = null;权作安慰吧。不过有一点是一定要做到,就是在Quit()前不能再有任何更改,不然还是会弹出保存的对话框。所以退出前确保一定是执行过WorkBook或是Application的Save()方法的。

热心网友 时间:2023-10-08 14:51

/// <summary> /// 导出excel /// </summary> /// <param name="html">html格式</param> /// <param name="excelName">导出excel名称</param> public static void DownloadData(string html, string excelName) {
HttpContext.Current.Response.Charset = "gb2312"; HttpContext.Current.Response.ContentType = "application/excel"; HttpContext.Current.Response.AddHeader("content-disposition", "inline; filename=" + excelName + ".xls"); HttpContext.Current.Response.Write(html); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End();
}
参数html就是组合的table,这个只能适用于b/s的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华为p7支持法语操作系统? 大白鲨HD6750 1GB GDDR5白金版这个显卡怎么样? 请高手们看看我的配置,加装显卡精影HD6670和HD6750哪个比较合适点... 蓝宝石HD 6750 1GB GDDR5白金版基本参数 ...HD5770 HD6750 HD6670 这几个显卡哪个好一些?大神们帮帮忙 蓝宝HD6750 1GB GDDR5白金版重要参数 ...是蓝宝石 HD6670 1G DDR5 白金版 HD6770 1G DDR5 白金版 HD6750 1G... 蓝宝石: HD6750/1G 黄金版和HD6670 1GB GDDR5白金版哪个好点啊?我的... 如何理解“从众”心理是一把“双刃剑”。 领动用5W30还是用5W40啊 美的空调显示f1是什么意思? 红米手机里的微信如何修改自己的名字啊? 如何使用VS2008开发操作EXCEL的应用程序 华为手机换微信名怎样换? vs2015如何生成exe格式文件? VS2008 中怎么样实现产生WORD EXCEL报表。就是怎么样把自带数据库中的... 通过VS2008 怎样把一张EXCEL表格处理后 生成一个新的EXCEL表格 手机qq上的图片怎么删除, 华为手机微信怎样换微信名字? VS2013新建Excel 2013工作簿是做什么用的 请问VS2017怎么把用C++把数据写入到EXCEL中, 在线等!!! qq里的照片怎么删? c#在VS2010的平台下怎么把数据导出到excel表中 为什么发送到QQ上的图片大小会改变? 如何利用VC++自动生成Excel表格 怎么用vs2010实现对word和excel的操作 如何用vs2008流生成excel文件 QQ上收到的图片保存多久?在哪里能找到? visual studio 怎么将数据导出到EXCEL表中,要用什么控件,写什么代码,在线等 vs2013如何生成exe文件 谁用vs2008做过导出excel的功能,为什么我导入了EXCEL9.OLB后只生成一个文件,而不是EXCEL9.H及EXCEL9.CPP 海尔空调出现f1是什么问题? Vivo手机微信昵称怎么改? 空调f1最简单的处理方法是什么? 若在vs中将excel当作数据库,那要怎么做?(求具体步骤!!!) 空调显示F1如果还让他开机工作行吗? vs2010怎么生成exe文件 惠尔浦空调出现F1是怎么回事? 志高空调f1是什么故障怎么处理? 两个苹果手机不用一个id照片会同步吗? 苹果手机、为什么这部手机拍照另一部手机也有,怎么解除? 苹果手机照片拍照会保存到icloud,会在手机保存吗?会保存两份吗? 两个苹果手机连着同一个ID会所有照片都同步么? 苹果x更新14系统后相机会不会同步iPhone11相机? 是不是每个苹果手机拍照都会自动上传到云端? iphone7搬家到新的iphone11上以后,用新设备拍照片,旧设备会看到吗?或者说相册会同步吗 苹果手机照片会与ipad同步显示吗 为什么苹果手机拍的照片会跟苹果平板连在一起? 同一个ip苹果手机拍照能同步到ipad上面嘛 新浪微博如何加粉