gpt4 book ai didi

c# - 使用 Open XML SDK 2.0 检索每行和每列中的所有单元格值

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:40 24 4
gpt4 key购买 nike

我正在使用 Open XML SDK 打开一个 Excel 文件,以从工作表中包含数据的所有行和列中检索单元格值。这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

namespace ReadingExcel
{
class RetrieveListOfExcelValues
{
static void Main(string[] args)
{
String fileName = @"C:\Users\Documents\TestReadingExcel.xlsx";
// Comment one of the following lines to test the method separately.
ReadExcelFileDOM(fileName); // DOM
} //end Main

static void ReadExcelFileDOM(string fileName)
{
// Open the spreadsheet document for read-only access.
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
{
// Retrieve a reference to the workbook part.
WorkbookPart wbPart = document.WorkbookPart;
//Worksheet name that is the the workbook
string sheetName = "Sheet1";
// Find the sheet with the supplied name, and then use that
// Sheet object to retrieve a reference to the first worksheet.
Sheet theSheet = wbPart.Workbook.Descendants<Sheet>().
Where(s => s.Name == sheetName).FirstOrDefault();

// Throw an exception if there is no sheet.
if (theSheet == null)
{
throw new ArgumentException("sheetName");
}

// Retrieve a reference to the worksheet part.
WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(theSheet.Id));
string parseCellValue;
foreach (Row r in theSheet.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
Cell theCell = wsPart.Worksheet.Descendants<Cell>().FirstOrDefault();
parseCellValue = GetCellValue(theCell, wbPart);

Console.Write(parseCellValue + " ");
//text = c.CellValue.Text;
//Console.Write(text + " ");
}
}

Console.WriteLine();
Console.ReadKey();
}
} //end ReadExcelFileDOMMethod

public static string GetCellValue(Cell cell, WorkbookPart wbPart)
{
string value = null;
if (cell != null)
{
value = cell.InnerText;

// If the cell represents an integer number, you are done.
// For dates, this code returns the serialized value that
// represents the date. The code handles strings and
// Booleans individually. For shared strings, the code
// looks up the corresponding value in the shared string
// table. For Booleans, the code converts the value into
// the words TRUE or FALSE.
if (cell.DataType != null)
{
switch (cell.DataType.Value)
{
case CellValues.SharedString:
// For shared strings, look up the value in the
// shared strings table.
var stringTable = wbPart.GetPartsOfType<SharedStringTablePart>()
.FirstOrDefault();

// If the shared string table is missing, something
// is wrong. Return the index that is in
// the cell. Otherwise, look up the correct text in
// the table.
if (stringTable != null)
{
value = stringTable.SharedStringTable.ElementAt(
int.Parse(value)).InnerText;
}

break;
case CellValues.Boolean:
switch (value)
{
case "0":
value =

"FALSE";
break;
default:
value =

"TRUE";
break;
}
break;
}
}
}
return value;
}
}
}

文本没有显示在控制台上,我无法准确地找出我在这段代码中做错了什么。这是我第一次尝试使用 Open XML。我可能忽略了一些东西,或者可能需要移动几行代码。

如何从工作表中的行和列中获取所有单元格值以显示在控制台上?

Excel格式

A1        B1          C1

Fruit Lot Date

Banana 4 4/13/2014

Orange 6 5/01/2014

Apple 9 3/14/2014

最佳答案

value = cell.Cellvalue.InnerText;

试一试

关于c# - 使用 Open XML SDK 2.0 检索每行和每列中的所有单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com