Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EPPlus读取Excel文件时,如何从对象访问单个数据?_C#_Excel_Object_Objectdatasource_Epplus - Fatal编程技术网

C# 使用EPPlus读取Excel文件时,如何从对象访问单个数据?

C# 使用EPPlus读取Excel文件时,如何从对象访问单个数据?,c#,excel,object,objectdatasource,epplus,C#,Excel,Object,Objectdatasource,Epplus,我试图从c#中的excel文件中读取一行,并使用EPPLUS将其存储在对象中 现在,当我打印对象的内容时,它将行的所有内容显示为单个字符串 如何限制对单个单元格内容的访问?i、 例如,单个单元格内容,以便我可以根据需要使用这些特定字段 var existingFile = new FileInfo("D:\\Fields.xlsx"); using (var package = new ExcelPackage(existingFile)) { ExcelWorkbook workB

我试图从c#中的excel文件中读取一行,并使用EPPLUS将其存储在对象中

现在,当我打印对象的内容时,它将行的所有内容显示为单个字符串

如何限制对单个单元格内容的访问?i、 例如,单个单元格内容,以便我可以根据需要使用这些特定字段

var existingFile = new FileInfo("D:\\Fields.xlsx"); 
using (var package = new ExcelPackage(existingFile)) 
{
    ExcelWorkbook workBook = package.Workbook;
    if (workBook != null) 
    { 
        if (workBook.Worksheets.Count > 0) 
        { 
            ExcelWorksheet currentWorksheet = workBook.Worksheets.First(); 
            var lastrow = currentWorksheet.Dimension.End.Row; 
            var lastcol = currentWorksheet.Dimension.End.Column; 
            for (int i = 1; i <= lastrow; i++) 
            {
                for (int j = 1; j <= lastcol; j++) 
                {
                    object asd = new object(); 
                    asd = currentWorksheet.Cells[i, j].Value; 
                    Console.WriteLine(asd);
                }
            }
        }
     }
}
var existingFile=new FileInfo(“D:\\Fields.xlsx”);
使用(var package=new ExcelPackage(existingFile))
{
Excel工作簿=package.工作簿;
如果(工作簿!=null)
{ 
如果(workBook.Worksheets.Count>0)
{ 
ExcelWorksheet currentWorksheet=workBook.Worksheets.First();
var lastrow=currentWorksheet.Dimension.End.Row;
var lastcol=currentWorksheet.Dimension.End.Column;

对于(int i=1;i您的代码应该可以正常工作。如果您看到excel文件的整行打印为单个字符串,那么我猜是excel文件本身的内容有问题,在这种情况下,您必须以某种方式解析字符串。请将屏幕截图或excel文件本身发布到某个在线位置,以便我们我可以看看

同时,请检查以下代码,该代码首先创建自己的excel文件,然后使用您的代码重新打开并保存:

public void ConsoleWriteTest()
{
    //Create some data
    var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
    if (existingFile.Exists)
        existingFile.Delete();

    using (var pck = new ExcelPackage(existingFile))
    {
        var workbook = pck.Workbook;
        var worksheet = workbook.Worksheets.Add("newsheet");

        #region Data

        //The data
        worksheet.Cells["A1"].Value = "Col1";
        worksheet.Cells["A2"].Value = "sdf";
        worksheet.Cells["A3"].Value = "ghgh";
        worksheet.Cells["A4"].Value = "sdf";
        worksheet.Cells["A5"].Value = "wer";

        worksheet.Cells["B1"].Value = "Col2";
        worksheet.Cells["B2"].Value = "Group B";
        worksheet.Cells["B3"].Value = "Group A";
        worksheet.Cells["B4"].Value = "Group C";
        worksheet.Cells["B5"].Value = "Group A";

        worksheet.Cells["C1"].Value = "Col3";
        worksheet.Cells["C2"].Value = 634.5;
        worksheet.Cells["C3"].Value = 274.5;
        worksheet.Cells["C4"].Value = 453.5;
        worksheet.Cells["C5"].Value = 634.5;

        worksheet.Cells["D1"].Value = "Col4";
        worksheet.Cells["D2"].Value = 996440;
        worksheet.Cells["D3"].Value = 185780;
        worksheet.Cells["D4"].Value = 686468;
        worksheet.Cells["D5"].Value = 996440;

        #endregion

        pck.Save();
    }

    //Reopen the file
    using (var package = new ExcelPackage(existingFile))
    {
        ExcelWorkbook workBook = package.Workbook;
        if (workBook != null)
        {
            if (workBook.Worksheets.Count > 0)
            {
                ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
                var lastrow = currentWorksheet.Dimension.End.Row;
                var lastcol = currentWorksheet.Dimension.End.Column;
                for (int i = 1; i <= lastrow; i++)
                {
                    for (int j = 1; j <= lastcol; j++)
                    {
                        object asd = new object();
                        asd = currentWorksheet.Cells[i, j].Value;
                        Console.WriteLine(asd);
                    }
                }
            }
        }
    }
}
public void控制台writetest()
{
//创建一些数据
var existingFile=new FileInfo(@“c:\temp\temp.xlsx”);
if(existingFile.Exists)
existingFile.Delete();
使用(var pck=新的ExcelPackage(现有文件))
{
var工作簿=pck.工作簿;
var工作表=工作簿。工作表。添加(“新闻表”);
#区域数据
//数据
工作表。单元格[“A1”]。Value=“Col1”;
工作表。单元格[“A2”]。Value=“sdf”;
工作表。单元格[“A3”]。Value=“GHGHGH”;
工作表。单元格[“A4”]。Value=“sdf”;
工作表。单元格[“A5”]。Value=“wer”;
工作表。单元格[“B1”]。Value=“Col2”;
工作表。单元格[“B2”]。Value=“B组”;
工作表。单元格[“B3”]。Value=“A组”;
工作表。单元格[“B4”]。Value=“C组”;
工作表。单元格[“B5”]。Value=“A组”;
工作表。单元格[“C1”]。Value=“Col3”;
工作表。单元格[“C2”]。值=634.5;
工作表。单元格[“C3”]。值=274.5;
工作表。单元格[“C4”]。值=453.5;
工作表。单元格[“C5”]。值=634.5;
工作表。单元格[“D1”]。Value=“Col4”;
工作表。单元格[“D2”]。值=996440;
工作表。单元格[“D3”]。值=185780;
工作表。单元格[“D4”]。值=686468;
工作表。单元格[“D5”]。值=996440;
#端区
pck.Save();
}
//重新打开文件
使用(var package=new ExcelPackage(existingFile))
{
Excel工作簿=package.工作簿;
如果(工作簿!=null)
{
如果(workBook.Worksheets.Count>0)
{
ExcelWorksheet currentWorksheet=workBook.Worksheets.First();
var lastrow=currentWorksheet.Dimension.End.Row;
var lastcol=currentWorksheet.Dimension.End.Column;

对于(int i=1;我没有使用该库的任何经验,但也许这个答案可以帮助你我觉得它与库无关。我可以访问excel文件,我也可以一次读取所有数据,但我希望能够访问存储在e对象。希望我讲得有道理。如果我把它弄复杂了,很抱歉。谢谢@Ernie对回答感兴趣,但我不想找这个。你注意到我们正在“asd”中存储所有excel数据吗对象?现在,我只想访问该对象中的几个字段。这些字段可能是单个单元格的内容或特定行的数据。希望我讲得通。@Jashwanth,“最后将所有excel数据存储在“asd”对象中”-根据您发布的代码,这不是您正在做的。在您的代码中,您通过指定行(i)或列(j)逐单元格循环也不是作为集合。但听起来你想将整行作为集合,然后对其进行操作?如果是这样,你必须进行一些转换。请参阅我上面粘贴的其他代码了解我的意思。同样,发布一个示例excel文件会有所帮助。
//Get entire rows or columns as collection and then print by casting
using (var package = new ExcelPackage(existingFile))
{
    ExcelWorkbook workBook = package.Workbook;
    if (workBook != null)
    {
        if (workBook.Worksheets.Count <= 0) 
            return;

        ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
        var lastrow = currentWorksheet.Dimension.End.Row;
        var lastcol = currentWorksheet.Dimension.End.Column;

        //get the row of column headers which are strings
        var asdrange = currentWorksheet.Cells[1, 1, 1, lastcol];
        Console.WriteLine("As cell objects");
        foreach (var cell in asdrange)
            Console.WriteLine(cell.Value);

        object asd = new object();
        asd = currentWorksheet.Cells[1, 1, 1, lastcol].Value;

        object[,] cellObjects = (object[,])asd;
        List<string> stringList = cellObjects.Cast<string>().ToList();

        Console.WriteLine(Environment.NewLine + "As casted to a List");
        Console.WriteLine(stringList[0]);
        Console.WriteLine(stringList[1]);
        Console.WriteLine(stringList[2]);
        Console.WriteLine(stringList[3]);

        //get the second row which is a mix of strings and double
        asdrange = currentWorksheet.Cells[2, 1, 2, lastcol];
        Console.WriteLine(Environment.NewLine + "As cell objects");
        foreach (var cell in asdrange)
            Console.WriteLine(cell.Value); 

        asd = currentWorksheet.Cells[2, 1, 2, lastcol].Value;
        cellObjects = (object[,])asd;
        List<object> objectList = cellObjects.Cast<object>().ToList();

        Console.WriteLine(Environment.NewLine + "As casted to a List");
        Console.WriteLine(objectList[0]);
        Console.WriteLine(objectList[1]);
        Console.WriteLine(objectList[2]);
        Console.WriteLine(objectList[3]);

        //Get Col3 which are doubles
        asdrange = currentWorksheet.Cells[2, 3, lastrow, 3];
        Console.WriteLine(Environment.NewLine + "As cell objects");
        foreach (var cell in asdrange)
            Console.WriteLine(cell.Value); 

        asd = currentWorksheet.Cells[2, 3, lastrow, 3].Value;
        cellObjects = (object[,])asd;
        List<double> doubleList = cellObjects.Cast<double>().ToList();

        Console.WriteLine(Environment.NewLine + "As casted to a List");
        Console.WriteLine(doubleList[0]);
        Console.WriteLine(doubleList[1]);
        Console.WriteLine(doubleList[2]);
        Console.WriteLine(doubleList[3]);
        Console.WriteLine(doubleList[4]);
        Console.WriteLine(doubleList[5]);
        Console.WriteLine(doubleList[6]);
        Console.WriteLine(doubleList[7]);
        Console.WriteLine(doubleList[8]);
    }
}