当前位置: 代码迷 >> C# >> C#操作Excel文件~创设Excel文件
  详细解决方案

C#操作Excel文件~创设Excel文件

热度:62   发布时间:2016-05-05 04:32:18.0
C#操作Excel文件~创建Excel文件

今天用了近一天的时间来完成和学习,和大家分享如下:

网上有用插件的方法,我是用COM组件

C#操作Excel文件:

1.在程序里创建Excel文件

2.在程序里对已有的Excel文件修改数据

前提

using MSExcel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.IO;

备注:第一个指令集会报错,需要添加引用COM下的Office和Excel

功能一:在程序里创建Excel文件

/// <summary>        /// 创建一个EXCEL文档        /// 如果检测到已有此名的该文档,覆盖        /// </summary>        static void CreateExcelFile()        {            object path = "E:\\VS项目路径\\测试生成EXCEL2\\MyText.xls";           //检测指定的文件是否存在(需要using System.IO)            if (File.Exists((string)path))            {                File.Delete((string)path);            }            MSExcel.Application appExcel;   //EXCEL应用程序变量            MSExcel.Workbook excelDoc;      //EXCEL文档变量            //初始化 vs2010用Application()            appExcel = new MSExcel.ApplicationClass();   //无法嵌入互操作类型(引用的EXCEL中嵌入操作改为False)                      //由于使用COM库,因此有很多变量需要使用Nothing代替            Object Nothing = Missing.Value;            excelDoc = appExcel.Workbooks.Add(Nothing);           //WdSaveFormat为EXCEL文档的格式保存            object format = MSExcel.XlFileFormat.xlWorkbookNormal;            //使用第一个工作表作为插入数据的工作表            MSExcel.Worksheet ws = (MSExcel.Worksheet)excelDoc.Sheets[1];           //在指定地方赋值             MSExcel.Range r = ws.get_Range("A1", "A1"); //获取第1行第1列单元格            r.Value2 = "直径";                          //向第1行第1列单元格赋值              #region 尝试在其他格子内赋值            //MSExcel.Range r2 = ws.get_Range("B1", "B1");            //r2.Value2 = 6;      //向第1行第2列单元格赋值              //MSExcel.Range r3 = ws.get_Range("C1", "C1");            //r3.Value2 = 7;            //MSExcel.Range r4 = ws.get_Range("C"+"2","C2");            //r4.Value2 = 8;            //.....可以接着向更多的Excel单元格赋值...            #endregion           //赋多个值           string zhijing = "B";           int[] num = new int[6];           for (int j = 0; j < 6; j++)               num[j] = j+1;            MSExcel.Range[] t = new MSExcel.Range[6];            for (int i = 1; i < 5;i++ )            {                string temp = zhijing + num[i].ToString();                t[i] = ws.get_Range(temp,temp);                t[i].Value2 = i;            }            //将excelDoc文档对象的内容保存为XLSX文档            excelDoc.SaveAs(path, Nothing, Nothing, Nothing, Nothing, Nothing, MSExcel.XlSaveAsAccessMode.xlExclusive, Nothing, Nothing, Nothing, Nothing, Nothing);           //关闭excelDoc文档对象            excelDoc.Close(Nothing, Nothing, Nothing);           //关闭excelApp组件对象           appExcel.Quit();                   }

备注:我的笔记本工作站是公司昨天新配的,因为这个在//将excelDoc文档对象的内容保存为XLSX文档这里报错未处理的COMException

详细描述问题:比如我将一根wrod文件移动到另一个文件夹,会弹出管理员权限……的

解决:在项目所在的硬盘右键-属性-安全-权限里给予权限

备注:在尝试在其他格子赋值的时候给自己普及了下Excel文件的知识,将格子所在位置的表示标出来了,横是行,纵是列,以英文+数字表示

备注:(A1,A1)的位置是test是第二个程序修改覆盖的,原为直径

备注:最后的结果就是上面的图片和下面的

  相关解决方案