C#操作Excel
2023-09-27 14:23:42 时间
1.System.Data.DataTable连接数据库
ExcelFile 是excel的完整路径
//OleDbConnection conExcel = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFile + ";Extended Properties=Excel 8.0");
//if (conExcel.State == ConnectionState.Closed)
//{
// conExcel.Open();
//}
2.获取第一个sheet表名称
不建议写死,程序自动获取下也很快的
System.Data.DataTable dtTmp = conExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = dtTmp.Rows[0][2].ToString().Trim();
3.获取datatable
"select * from [" + tableName + "]"
执行这个sql语句吧,剩下的就是datatable的操作了
根据DataTable可以获取各行各列的值,但似乎不稳定,有时只能获取空值而实际明明有值
4.com方式打开excel
需引用Microsoft.Office.Interop.Excel
object missing = System.Type.Missing;
Application app = new ApplicationClass();
////打开excel,注意空参数不可以用null
Workbook wBook = app.Workbooks.Open(ExcelFile, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
app.Visible = false;
//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
////打开第一个Worksheet
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
////写值
wSheet.Cells[行, 列] = "你想写的值";
////获取cell的值,注意不可用wSheet.Cells[行, 列]获取,这样一般得到"System.__ComObject"
Range ra = wSheet.get_Range(wSheet.Cells[i, j], wSheet.Cells[i, j]); ////此处是单元格范围,自己决定多大
string sVal = ra.Text.ToString();
////判断单元格是否有公式
ra.Formula.ToString().IndexOf("=") >= 0
////设置excel单元格样式,很多的,自己百度下吧
////这个是设置单元格的边框宽度
Range range = wSheet.get_Range(wSheetDes.Cells[i, j], wSheetDes.Cells[i, j]);
range.Borders[XlBordersIndex.xlEdgeBottom].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeLeft].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeRight].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeTop].Weight = 2;
Range range = wSheetDes.get_Range(wSheet.Cells[i, j], wSheet.Cells[i, j]);
range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
//保存工作簿,方法很多,自己决定怎么用
wSheet.SaveAs(ExcelFile, missing, missing, missing, missing, missing, missing, missing, missing, missing);
wBook.Save();
app.Save(ExcelFile);
app.SaveWorkspace(ExcelFile);
////退出,比较麻烦
wBook.Close(true, missing, missing);
wSheet = null;
wBook = null;
app.Quit();
app = null;
System.GC.Collect();
System.GC.WaitForFullGCComplete();
全部关掉然后置为null,再强制垃圾回收即可
常用的大概这么多,应该够用了
相关文章
- C#-文件操作
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
- 不能不说的C#特性-表达式树
- .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度
- C#使用oledb连接excel运行Insert Into语句出现“操作必须使用一个可更新的查询”的解决的方法
- C# 基于Aspose.Cells的数据导出到Excel
- C#应用程序配置文件.config介绍
- C#【文件操作篇】保存内容到txt文件
- C#,图论与图算法,双连通图(Biconnected Components of Graph)的算法与源代码
- C#中的Socket编程-TCP客户端
- C# 图片按照像素比例进行缩放
- 《敏捷软件开发:原则、模式与实践(C#版.修订版)》目录—导读
- C# 字符串的连接
- 【C#】C# IO类路径合并、本地路径、拼接路径Path.Combine
- C# 学习书籍推荐(步步为营)
- C#使用NPOI读写excel(转载)
- 使用C# 链接 Mysql 显示??? 乱码 的解决方案
- C#编程学习27: C#操作Excel从入门到精通
- C#如何实现一个简单的流程图设计器
- 使用c#对MongoDB进行查询(1)
- C# 导入Excel
- C# Excel导入数据
- C# 根据Excel生成树
- C# Excel导数据
- C# Excel To DataTable
- C# Excel转换为Json