• C#操作Excel文件(读取Excel,写入Excel)


    看到论坛里面不断有人提问关于读取excel和导入excel的相关问题。闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家能够给大家带了一定的帮助。 另外我们还要注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。

    1.加载Excel(读取excel内容)返回值是一个DataSet

    1. //加载Excel  
    2. publicstatic DataSet LoadDataFromExcel(string filePath) 
    3.     try 
    4.     { 
    5.         string strConn; 
    6.         strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"
    7.         OleDbConnection OleConn = new OleDbConnection(strConn); 
    8.         OleConn.Open(); 
    9.         String sql = "SELECT * FROM  [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等  
    10.  
    11.         OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); 
    12.         DataSet OleDsExcle = new DataSet(); 
    13.         OleDaExcel.Fill(OleDsExcle, "Sheet1"); 
    14.         OleConn.Close(); 
    15.         return OleDsExcle; 
    16.     } 
    17.     catch (Exception err) 
    18.     { 
    19.         MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息"
    20.             MessageBoxButtons.OK, MessageBoxIcon.Information); 
    21.         returnnull
    22.     } 

    2.写入Excel内容,参数:excelTable是要导入excel的一个table表

    1. publicstaticbool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath) 
    2.         { 
    3.             Microsoft.Office.Interop.Excel.Application app = 
    4.                 new Microsoft.Office.Interop.Excel.ApplicationClass(); 
    5.             try 
    6.             { 
    7.                 app.Visible = false
    8.                 Workbook wBook = app.Workbooks.Add(true); 
    9.                 Worksheet wSheet = wBook.Worksheets[1] as Worksheet; 
    10.                 if (excelTable.Rows.Count > 0) 
    11.                 { 
    12.                     int row = 0; 
    13.                     row = excelTable.Rows.Count; 
    14.                     int col = excelTable.Columns.Count; 
    15.                     for (int i = 0; i < row; i++) 
    16.                     { 
    17.                         for (int j = 0; j < col; j++) 
    18.                         { 
    19.                             string str = excelTable.Rows[i][j].ToString(); 
    20.                             wSheet.Cells[i + 2, j + 1] = str; 
    21.                         } 
    22.                     } 
    23.                 } 
    24.  
    25.                 int size = excelTable.Columns.Count; 
    26.                 for (int i = 0; i < size; i++) 
    27.                 { 
    28.                     wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName; 
    29.                 } 
    30.                 //设置禁止弹出保存和覆盖的询问提示框  
    31.                 app.DisplayAlerts = false
    32.                 app.AlertBeforeOverwriting = false
    33.                 //保存工作簿  
    34.                 wBook.Save(); 
    35.                 //保存excel文件  
    36.                 app.Save(filePath); 
    37.                 app.SaveWorkspace(filePath); 
    38.                 app.Quit(); 
    39.                 app = null
    40.                 returntrue
    41.             } 
    42.             catch (Exception err) 
    43.             { 
    44.                 MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息"
    45.                     MessageBoxButtons.OK, MessageBoxIcon.Information); 
    46.                 returnfalse
    47.             } 
    48.             finally 
    49.             { 
    50.             } 
    51.         } 
  • 相关阅读:
    Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类
    NodeRED怎样导出导入流程为json文件
    Geoserver中跨域问题解决
    Vue中预览HIKVSION海康威视的NVR(网络硬盘录像机)中多个通道(摄像机)的视频
    NodeRED中配置周期性执行、指定时间阶段执行、指定时间执行事件
    Geoserver中怎样导入样式文件sld文件并设置样式
    Geoserver中发布预览QGIS编辑并保存到PostGIS数据库中数据
    【20220707】连岳摘抄
    【20220705】为二宝腾空间
    【20220706】有压力,又如何
  • 原文地址:https://www.cnblogs.com/xyzhuzhou/p/2232034.html
Copyright © 2020-2023  润新知