[英]Reading .xlsx in C# OpenXML
我正在嘗試查看是否有可能使用C#通過OpenXML將.xlsx文件讀取到gridview中
我已經通過OleDB連接完成了此操作,但是我想嘗試使用OpenXML。 是gridview的解決方法還是我應該處理它給出的數據?
另外,如果有人對使用OpenXML導入有任何進一步的閱讀材料,那將是非常方便的,因為當前網絡似乎非常稀疏。
編輯:
因此,在下面的鏈接之后,我又回來了:
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(xlsxFilePath, true))
{
//Access the main Workbook part, which contains data
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
WorksheetPart worksheetPart = null;
if (!string.IsNullOrEmpty(sheetName))
{
Sheet ss = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == sheetName).SingleOrDefault<Sheet>();
worksheetPart = (WorksheetPart)workbookPart.GetPartById(ss.Id);
}
else
{
worksheetPart = workbookPart.WorksheetParts.FirstOrDefault();
}
SharedStringTablePart stringTablePart = workbookPart.SharedStringTablePart;
if (worksheetPart != null)
{
Row lastRow = worksheetPart.Worksheet.Descendants<Row>().LastOrDefault();
Row firstRow = worksheetPart.Worksheet.Descendants<Row>().FirstOrDefault();
if (firstRow != null)
{
foreach (Cell c in firstRow.ChildElements)
{
string value = GetValue(c, stringTablePart);
dt.Columns.Add(value);
}
}
if (lastRow != null)
{
for (var i = 2; i <= lastRow.RowIndex; i++)
{
DataRow dr = dt.NewRow();
var empty = true;
Row row = worksheetPart.Worksheet.Descendants<Row>().Where(r => i == r.RowIndex).FirstOrDefault();
var j = 0;
if (row != null)
{
foreach (Cell c in row.ChildElements)
{
//Get cell value
string value = GetValue(c, stringTablePart);
if (!string.IsNullOrEmpty(value) && value != "")
{
empty = false;
}
dr[j] = value;
j++;
if (j == dt.Columns.Count)
{
break;
}
}
if (empty)
{
break;
}
dt.Rows.Add(dr);
}
}
}
}
}
return dt;
}
我遇到的問題是我必須指定工作表名稱-這可能超出了可能,但是可以選擇獲取當前工作表名稱,然后讓用戶單擊他們希望程序讀取的工作表-例如彈出式組合框?
要在C#中操作openxml,您可以使用openxml SDK(在此處提供: https ://msdn.microsoft.com/zh-cn/library/office/bb448854.aspx)。
對於您的問題,我認為沒有嵌入式解決方案“ Excel2Gridview”,但操作起來應該不會很困難。 快速瀏覽一下網絡,您會發現相反的問題“ gridview to Excel”。 因此,如果您采用這樣的解決方案https://social.msdn.microsoft.com/Forums/office/zh-CN/20d517d0-fb70-4879-b595-71b6d57be0ae/export-grid-view-to-excel-mysql ?forum = exceldev應用反向方法將您的excel轉換為gridview
更新
要檢索工作表名稱,請查看: https : //msdn.microsoft.com/zh-cn/library/office/bb507946.aspx
要將工作表名稱列出給用戶,您可以創建如下形式:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.