gpt4 book ai didi

c# - 读取上传的 Excel 文件

转载 作者:行者123 更新时间:2023-12-04 21:04:54 25 4
gpt4 key购买 nike

我正在构建一个快速的概念验证项目,以展示解析 excel 文件的能力。根据 Microsoft 文档 ( How to parse and read a large spreadsheet document ),似乎选择的 sdk 是 Open Xml

概念验证为用户上传文件 (.xlsx) 提供了一种基本形式。 Controller 读取文件并吐出内容。我正在努力获取单元格的值,相反,我似乎只能获得某种标识符或对文本的引用。这是我的代码和一些例子

查看

@using(Html.BeginForm("Index", "Home", FormMethod.Post, new{ enctype="multipart/form-data" } ))
{
<input type="file" name="file"/>
<input type="submit"/>
}
<br/>
@Html.Raw(ViewBag.Text)

Action

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
ViewBag.Text = "";
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(file.InputStream, false))
{
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
string text;
foreach (Row r in sheetData.Elements<Row>())
{
foreach (Cell c in r.Elements<Cell>())
{
text = c.CellValue.Text;
ViewBag.Text += text + ", ";
}
ViewBag.Text += "<br />";
}
}

return this.View();
}

Excel 文件

|你好 |世界 |
|世界 |你好 |

输出

0, 1,
1, 0,

如您所见,0 代表“Hello”,1 代表“World”。我用更大的数据集对此进行了测试,并确认相同的词在打印到屏幕上时具有相同的值。

该示例几乎是从 MS 网站复制/粘贴的。我已经尝试访问其他 c.CellValue 属性,例如 InnerTextInnerXml 只是为了获得相同的结果。我究竟做错了什么? Open XML 是用于此目的的良好 SDK 吗?

最佳答案

使用此方法获取单元格的准确值而不是数字:

private string ReadExcelCell(Cell cell, WorkbookPart workbookPart)
{
var cellValue = cell.CellValue;
var text = (cellValue == null) ? cell.InnerText : cellValue.Text;
if ((cell.DataType != null) && (cell.DataType == CellValues.SharedString))
{
text = workbookPart.SharedStringTablePart.SharedStringTable
.Elements<SharedStringItem>().ElementAt(
Convert.ToInt32(cell.CellValue.Text)).InnerText;
}

return (text ?? string.Empty).Trim();
}

关于c# - 读取上传的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510409/

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