`

C# 读2007Excel文件

    博客分类:
  • C#
 
阅读更多

今天遇到一个问题:

C#去读Excel文件

 

这里提供源代码

为了怕自己忘记,这里记录一下

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

namespace ExcelTool
{
    public partial class FrmMain : Form
    {
        string str = @"C:\Program Files\Data\SpaceKeyword.xlsx";
        object missing = Missing.Value;
        MSExcel.Application app = null;
        MSExcel.Workbook wb = null;
        MSExcel.Worksheet ws = null;
        MSExcel.Range r = null;
        /// <summary>
        /// 加载Excel
        /// </summary>
        private void InitExcel()
        { 
            //打开excel
            app = new Microsoft.Office.Interop.Excel.Application();
            wb = app.Workbooks.Open(str, false, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            app.Visible = false;//读Excel不显示出来影响用户体验

            //得到WorkSheet对象
            ws = (MSExcel.Worksheet)wb.Worksheets.get_Item(1);
        }
        /// <summary>
        /// 读取Excel中的内容
        /// </summary>
        private void ReadExcel()
        {
            InitExcel();
            //读取A1单元格内容
            r = ws.get_Range("A1", Type.Missing);
            string strA1 = r.Value;
            app.Quit();//退出
            MessageBox.Show(strA1);
        }
        /// <summary>
        /// 写入Excel(Win7下要以管理员身份运行才能修改)
        /// </summary>
        private void WriteExcel()
        {
            InitExcel();
            ws.Cells[1, 1] = "修改的内容";
            //保存Excel
            wb.Save();
            wb.Close(null, null, null);
            app.Workbooks.Close();
            app.Application.Quit();
            app.Quit();

            System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

            ws = null;
            wb = null;
            app = null;
        }
    }
}
 

 

 

 

 public class Excel
    {
        public static String[] getWorksheetList(String connectionString)
        {
            OleDbConnection objConn = null;
            DataTable sheets = null;
            try
            {
                objConn = new OleDbConnection(connectionString);
                objConn.Open();

                sheets = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                int k = 0;
                String[] worksheets = new String[sheets.Rows.Count];
                foreach (DataRow row in sheets.Rows)
                {
                    worksheets[k] = row["TABLE_NAME"].ToString().Replace("'", "").Replace("$", "");
                }
                return worksheets;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return null;
            }
            finally
            {
                if (objConn != null)
                {
                    objConn.Close();
                    objConn.Dispose();
                }
                if (sheets != null)
                    sheets.Dispose();
            }
        }
        public static void echoAsCSV(string connectionString)
        {
            try
            {
                var adapter1 = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
                var ds = new DataSet();
                adapter1.Fill(ds, "results");
                DataTable data = ds.Tables["results"];

                for (int i = 0; i < data.Rows.Count; i++)
                {
                    for (int j = 0; j < data.Columns.Count; j++)
                        Console.Write("\"" + data.Rows[i].ItemArray[j] + "\";");
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        static void Main(string[] args)
        {
            foreach (String arg in args)
            {
                Console.WriteLine(arg);
            }

            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", "E:/1.xlsx");

            String[] worksheetList = getWorksheetList(connectionString);
            if (worksheetList != null)
                foreach (String worksheetName in worksheetList)
                    Console.WriteLine(worksheetName);

            echoAsCSV(connectionString);

            Console.Read();
        }
    }
1
0
分享到:
评论
5 楼 chenhailong 2013-04-08  
u010028054 写道
再问几个问题
36行的
 ws = (MSExcel.Worksheet)wb.Worksheets.get_Item(1);   

括号中的1是指第一张表吗?也就是sheet1?因为我要读好几张
还有A1单元格是A列第一行的意思吗?相应的是字母加数字读取位置?
我要读的都是数字,但是改成var strA1 = r.Value;还是提示value不受语言支持,是不是还有哪我没弄对,纯数字该改哪些东西呢?
谢谢大神了,我刚学还是小白不太懂,求指导


第一个问题: 对的就是sheet1,你可以写个方法来遍历所有的sheets
第二个问题:对的就是sheet的第一个位置,你如果知道类型的话,可以采用强制转化的方式来解决这个问题。
你也可以debug看下下面的代码内容。
r = ws.get_Range("A1", Type.Missing);
类型是Type.Missing,可以采用别的类型,Type有很多种
4 楼 u010028054 2013-04-03  
再问几个问题
36行的
 ws = (MSExcel.Worksheet)wb.Worksheets.get_Item(1);   

括号中的1是指第一张表吗?也就是sheet1?因为我要读好几张
还有A1单元格是A列第一行的意思吗?相应的是字母加数字读取位置?
我要读的都是数字,但是改成var strA1 = r.Value;还是提示value不受语言支持,是不是还有哪我没弄对,纯数字该改哪些东西呢?
谢谢大神了,我刚学还是小白不太懂,求指导
3 楼 chenhailong 2013-04-03  
u010028054 写道
大神,这个代码的46行提示value不受语言支持是什么意思?怎样解决呢?我想用一下读写代码,谢谢了。

希望对你有帮助
u010028054 写道
大神,这个代码的46行提示value不受语言支持是什么意思?怎样解决呢?我想用一下读写代码,谢谢了。

2 楼 chenhailong 2013-04-03  
可能是[读取A1单元格内容]有问题。你看看是不是A1单元格内的字符类型不是string
我得到的是string
string strA1 = r.Value; 
你相应的改掉就行了,也可以用var来定义,这是C#的优势
1 楼 u010028054 2013-04-03  
大神,这个代码的46行提示value不受语言支持是什么意思?怎样解决呢?我想用一下读写代码,谢谢了。

相关推荐

    C#读取加密Excel文件

    C# 读取加密的Excel 文件... 开始研究NPOI读取加密的Excel文件,没有研究出来,后来才改用Microsoft.Office.Interop.Excel读取加密的Excle文件。若有那位大牛研究出NPOI读取加密的Excel文件,希望能共享出源码来。 谢谢

    excel_read.rar_C# excel读写_C# 读excel_C#读Excel文件_c# excel_读写 exc

    c#读写excel,对excel文件的读\写\改

    C#创建 读 写 Excel 在Excel中插入图片代码

    在C#编程环境中,操作Excel文件是常见的任务,特别是在数据处理和报告生成方面。这篇教程将专注于如何使用C#创建、读取、写入Excel文件,并且重点讲解如何在Excel中插入图片。我们将通过COM(Component Object Model...

    c#操作Excel并显示到控件上

    在C#编程中,操作Excel文件是一项常见的任务,特别是在数据处理和报表展示的场景下。本文将详细讲解如何使用C#来读取Excel文件,并将其内容显示到Windows Forms控件上,以便用户能够直观地查看和交互。 首先,C#...

    C#读取EXCEL图表

    在.NET环境中,C#语言提供了丰富的库来处理Excel文件,其中最常用的是Microsoft.Office.Interop.Excel命名空间,它允许我们直接与Excel对象模型交互,从而读取、写入甚至操作Excel图表。本文将深入探讨如何使用C#在...

    C#读取EXCEL并输出CSV文件

    本主题涉及的是如何使用C#来读取Excel文件并将其内容输出为CSV文件。Excel文件通常用于存储和处理表格数据,而CSV(Comma Separated Values)文件则是一种通用的数据交换格式,易于被各种应用程序理解和处理。 首先...

    C# 导入Excel读取图片上传

    使用这个组件,我们可以直接操作Excel文件,读取其中的数据和图像。以下是一个基本的步骤概述: 1. 引用Microsoft.Office.Interop.Excel库:在你的C#项目中,需要添加对Microsoft.Office.Interop.Excel的引用。右键...

    C# Excel文件的读操作

    当涉及到处理电子表格,如Microsoft Excel,C#提供了一系列API和库来方便开发者进行读取、写入和操作Excel文件。本篇文章将深入探讨如何在Visual Studio 2008环境下,使用C#进行Excel文件的读取操作。 首先,为了...

    C#读EXCEL文档

    ### C#读取EXCEL文档知识点详解 #### 一、知识点概述 ...通过以上分析,我们可以看到使用C#读取Excel文件是一个相对复杂的过程,涉及到多个方面的技术和细节。希望本篇文章能够帮助开发者更好地理解和应用这一功能。

    c#利用EPPlus读取excel实例

    c#利用EPPlus读取excel实例。...简介:Epplus是一个使用Open Office XML(Xlsx)文件格式,能读写Excel 2007/2010文件的开源组件 功效:支持对excel文档的汇入汇出,图表(excel自带的图表基本都可以实现)的列印

    C#读取Excel文件

    本篇文章将深入探讨如何使用C#读取Excel文件,特别关注对Office 2003和Office 2007的支持,以及如何获取Excel工作表的名称。 首先,我们需要知道C#读取Excel文件主要依赖于第三方库,因为.NET框架的标准库并不直接...

    C#把excel表格中的数据读入到数组

    ### C#将Excel表格中的数据读入到数组 在日常工作中,我们经常需要处理大量的Excel文件,特别是当这些文件作为...通过以上步骤,我们可以有效地使用C#将Excel文件中的数据读取到数组中,为后续的数据处理提供了便利。

    C# NPOI读写Excel

    总结来说,C#结合NPOI库是处理Excel文件的强大工具,无论是读取已有数据还是创建新的工作表,它都能提供灵活且高效的解决方案。在实际项目中,了解和熟练掌握NPOI的使用,能极大地提高数据处理的效率和质量。通过...

    C#和office COM读入Excel文件并处理

    用C#和office COM功能(VS2010版本),将Excel的文件里的Sheet1的列表读入,...查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml、查询时)。

    C#简单的读取EXCEL数据demo例子

    以下是一个基本的C#代码示例,展示如何使用Microsoft.Office.Interop.Excel来读取Excel文件: ```csharp using Excel = Microsoft.Office.Interop.Excel; // 初始化Excel应用程序对象 Excel.Application excelApp ...

    C# 读取excel里面内容再按照一定格式写入excel

    在C#编程中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或报表生成等场景。本篇文章将详细讲解如何使用C#读取Excel文件中的内容,并根据特定格式将其写入新的Excel文件。 首先,我们需要引入...

    C#-WPS-Excel.rar

    3. Excel操作:使用WPS提供的.NET组件或接口,创建、打开、写入和保存Excel文件。 4. 报表生成:根据处理后的数据生成图表或表格,便于分析和展示。 5. 日志记录:可能有日志系统,用于记录操作过程和异常情况。 在...

    C#读出、编辑、写入Excel文件

    dlgOpen.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"; dlgOpen.FilterIndex = 1; dlgOpen.FileName = @"..\..\..\Test_DepthLayer.xls"; if (dlgOpen.ShowDialog() != DialogResult.OK) return; _...

    C#中读取Excel表格数据实例

    本文将深入探讨如何在C#中实现无依赖于Microsoft Office的情况下读取Excel表格数据,主要关注以下几个方面:使用开源库、操作Excel文件格式以及优化性能。 首先,C#本身并不内置读取Excel的API,因此我们需要借助第...

    c#利用EPPlus写入、读取、修改excel实例

    在.NET开发环境中,C#程序员经常需要处理Excel文件,用于数据导入导出、报表生成等任务。EPPlus是一个强大的开源库,专为处理Office Open XML(XLSX)格式的Excel文件而设计。本文将详细介绍如何使用EPPlus进行Excel...

Global site tag (gtag.js) - Google Analytics