博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 操作Excel ——Excel获取数据、时间、图片
阅读量:4316 次
发布时间:2019-06-06

本文共 9494 字,大约阅读时间需要 31 分钟。

     最近开发项目中,涉及到通过c#,向Excel中读取数据、插入图片、读取时间等操作。经过查找网上资料,终于完成相关操作,现将代码粘贴出来:

1 public class ExcelControl:ConvertObject   2     {
3 //Fields 4 private _Workbook _objBook=null ; 5 private Application _objExcel=null ; 6 private object _objOpt=Missing.Value ; 7 private Range _objRange=null ; 8 private _Worksheet _objWorkSheet=null ; 9 private Sheets _objSheets=null ; 10 private string _savePath;//文件保存路径 11 private int _sheetIndex=1;//工作表的索引 12 private string _templatePath;//文件模板路径 13 14 15 16 //Properties 17 public string SavePath 18 {
19 get { return _savePath; } 20 set { _savePath = value; } 21 } 22 23 public int SheetIndex 24 {
25 get { return _sheetIndex; } 26 set { _sheetIndex = value; } 27 } 28 public string TemplatePath 29 {
30 get { return _templatePath; } 31 set { _templatePath = value; } 32 } 33 34 //Methods 35 36 public ExcelControl() 37 {
38 this._objExcel = new ApplicationClass(); 39 } 40 41 public void CellsAlignment(int startRow, int startColumn, int endRow, int endColumn, XlHAlign hAlign, XlVAlign vAlign) 42 {
43 Range range = this._objWorkSheet.get_Range(this._objWorkSheet.Cells[startRow, startColumn], this._objWorkSheet.Cells[endRow, endColumn]); 44 range.HorizontalAlignment = hAlign; 45 range.VerticalAlignment = vAlign; 46 } 47 48 public void CellsUnite(int startRow, int startColumn, int endRow, int endColumn) 49 {
50 this._objWorkSheet.get_Range(this._objWorkSheet.Cells[startRow, startColumn], this._objWorkSheet.Cells[endRow, endColumn]).MergeCells = true; 51 } 52 53 /// 54 /// 关闭excel 55 /// 56 public void Close() 57 {
58 try 59 {
60 this._objBook.Close(_objOpt, _objOpt, _objOpt); 61 this._objExcel.Workbooks.Close(); 62 this._objExcel.Quit(); 63 Marshal.ReleaseComObject(_objBook); 64 Marshal.ReleaseComObject(_objExcel); 65 this._objBook = null; 66 this._objExcel = null; 67 GC.Collect(); 68 } 69 catch(Exception ex) 70 {
71 ErrMessage = ex.Message; 72 } 73 } 74 75 /// 76 /// 获取excel中单元格数据 77 /// 78 /// 79 ///
80 public object GetRange(object range) 81 {
82 try 83 {
84 this._objRange = this._objWorkSheet.get_Range(range, this._objOpt); 85 return this._objRange.Value2; 86 } 87 catch (Exception ex) 88 {
89 this.ErrMessage = ex.Message; 90 return null; 91 } 92 } 93 94 /// 95 /// 向excel中插入图片 96 /// 97 /// 图片名称 98 /// 左边宽度 99 /// 顶部宽度 100 /// 宽度 101 /// 高度 102 public void InsertPictures(string pictureName, int left, int top, int width, int height) 103 {
104 this._objWorkSheet.Shapes.AddPicture(pictureName, MsoTriState.msoFalse, MsoTriState.msoTrue, (float)left, (float)top, (float)width, (float)height); 105 } 106 107 public bool InsertRow(object rowID, object colunmID) 108 {
109 try 110 {
111 Range range = (Range)this._objWorkSheet.Cells[rowID, colunmID]; 112 range.Select(); 113 range.EntireRow.Insert(this._objOpt, this._objOpt); 114 return true; 115 } 116 catch (Exception) 117 {
118 return false; 119 } 120 } 121 122 /// 123 /// 打开excel 124 /// 125 ///
126 public bool Open() 127 {
128 try 129 {
130 this._objBook = this._objExcel.Workbooks.Open(this._templatePath, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt); 131 this._objSheets = this._objBook.Worksheets; 132 return true; 133 } 134 catch(Exception e) 135 {
136 this.ErrMessage = e.Message; 137 return false; 138 } 139 } 140 141 /// 142 /// 打开模板 143 /// 144 /// 145 ///
146 public bool Open(string filePath) 147 {
148 this._templatePath = filePath; 149 try 150 {
151 this._objBook = this._objExcel.Workbooks.Open(this._templatePath, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt); 152 this._objSheets = this._objBook.Worksheets; 153 return true; 154 } 155 catch (Exception e) 156 {
157 this.ErrMessage = e.Message; 158 return false; 159 } 160 } 161 162 /// 163 /// 行自动适合宽度 164 /// 165 /// 166 public void RowAutoFit(int rowNum) 167 {
168 Range range = (Range)this._objWorkSheet.Rows[rowNum.ToString() + ":" + rowNum.ToString(), Type.Missing]; 169 range.EntireColumn.AutoFit(); 170 } 171 172 /// 173 /// 保存 174 /// 175 ///
176 public bool Save() 177 {
178 try 179 {
180 this._objBook.Save(); 181 return true; 182 } 183 catch (Exception ex) 184 {
185 this.ErrMessage = ex.Message; 186 return false; 187 } 188 } 189 190 /// 191 /// 另存为 192 /// 193 ///
194 public bool SaveAs() 195 {
196 try 197 {
198 this._objBook.SaveAs(this._savePath, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, XlSaveAsAccessMode.xlNoChange, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt); 199 return true; 200 } 201 catch (Exception ex) 202 {
203 this.ErrMessage = ex.Message; 204 return false; 205 } 206 } 207 public bool SaveAs(string newPath) 208 {
209 this._savePath = newPath; 210 try 211 {
212 this._objBook.SaveAs(this._savePath, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt, XlSaveAsAccessMode.xlNoChange, this._objOpt, this._objOpt, this._objOpt, this._objOpt, this._objOpt); 213 return true; 214 } 215 catch (Exception ex) 216 {
217 this.ErrMessage = ex.Message; 218 return false; 219 } 220 } 221 222 /// 223 /// 工作表激活状态 224 /// 225 ///
226 public bool SetActiveSheer() 227 {
228 try 229 {
230 this._objWorkSheet = (_Worksheet)this._objSheets.get_Item(this._sheetIndex); 231 return true; 232 } 233 catch (Exception ex) 234 {
235 this.ErrMessage = ex.Message; 236 return false; 237 } 238 } 239 240 /// 241 /// 242 /// 243 /// 244 ///
245 public bool SetActiveSheer(int activeIndex) 246 {
247 this._sheetIndex = activeIndex; 248 try 249 {
250 this._objWorkSheet = (_Worksheet)this._objSheets.get_Item(this._sheetIndex); 251 return true; 252 } 253 catch (Exception ex) 254 {
255 this.ErrMessage = ex.Message; 256 return false; 257 } 258 } 259 260 /// 261 /// 设置显示警告 262 /// 263 /// 264 public void SetDisplayAlerts(bool b) 265 {
266 this._objExcel.DisplayAlerts = b; 267 } 268 269 /// 270 /// 向excel中插入值 271 /// 272 /// 插入位置 273 /// 插入值 274 public void SetRange(object range, object newValue) 275 {
276 try 277 {
278 this._objRange = this._objWorkSheet.get_Range(range, this._objOpt); 279 this._objRange.Value2 = newValue; 280 } 281 catch (Exception ex) 282 {
283 this.ErrMessage = ex.Message; 284 } 285 } 286 287 /// 288 /// 获取excel中时间格式 289 /// 290 /// 291 ///
292 public DateTime GetConvertDate(string strDate) 293 {
294 return DateTime.FromOADate(Convert.ToDouble(strDate)); 295 } 296 }

     本人能力有限,如有错误,望大家指正。

转载于:https://www.cnblogs.com/Peter-Luo/archive/2011/12/23/C_Excel.html

你可能感兴趣的文章
C++实验二
查看>>
使用case语句给字体改变颜色
查看>>
JAVA基础-多线程
查看>>
面试题5:字符串替换空格
查看>>
JSP九大内置对象及四个作用域
查看>>
ConnectionString 属性尚未初始化
查看>>
MySQL基本命令和常用数据库对象
查看>>
poj 1222 EXTENDED LIGHTS OUT(位运算+枚举)
查看>>
进程和线程概念及原理
查看>>
Lucene、ES好文章
查看>>
android 生命周期
查看>>
jquery--this
查看>>
MySQL 5.1参考手册
查看>>
TensorFlow安装流程(GPU加速)
查看>>
OpenStack的容器服务体验
查看>>
BZOJ 1066 蜥蜴(网络流)
查看>>
提高批量插入数据的方法
查看>>
Linux重启Mysql命令
查看>>
前端模块化:RequireJS(转)
查看>>
应用程序缓存的应用(摘抄)
查看>>