簡體   English   中英

讀取Excel單元格格式

[英]Read Excel Cell Format

我正在研究這個程序,它將讀取excel文件中的數據並將其放入我們的數據庫中。 該程序是使用C#在Visual Studio 2010中編寫的,我正在使用NPOI庫。

在過去,我能夠逐行和逐個單元地讀取電子表格以獲取數據,但excel文件的新格式不允許我輕松地執行此操作。 (excel是由另一個用戶給出的,所以我無法真正做出重大改變)。

一張表中有幾個“表”(每個列名使用邊框和標題),我需要主要從表中獲取數據,但有時也需要在表外部。

我想知道我是否要逐行閱讀電子表格(這是我有點熟悉的),有沒有辦法告訴我已經到了桌子? 有沒有辦法可以閱讀細胞的“格式”?

我的意思是,例如,“ 此單元格周圍有邊框,因此從該行開始是一個表格。 ”或“ 此單元格中的文本為粗體,因此該行是此新表格的標題行。

在過去,我只能閱讀電子表格的“文本”而不​​是格式/樣式。 我一直在網上搜索,我只能找到如何設置輸出excel的樣式,但不能找到如何從輸入中讀取格式。

任何幫助表示贊賞,謝謝!

將源工作簿中的各個表定義為具有已知名稱的命名范圍會更好。 然后你可以得到這樣的相關區域 -

using System.IO;
using System.Windows;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

// ...
        using (var file = new FileStream(workbookLocation, FileMode.Open, FileAccess.Read))
        {
          var workbook = new XSSFWorkbook(file);
          var nameInfo = workbook.GetName("TheTable");
          var tableRange = nameInfo.RefersToFormula;
          // Do stuff with the table
        }

如果您無法控制源電子表格並且無法將表定義為命名范圍,則可以按照建議讀取單元格格式。 以下是閱讀TopBorder風格的示例 -

        using (var file = new FileStream(workbookLocation, FileMode.Open, FileAccess.Read))
        {
            var workbook = new XSSFWorkbook(file);
            var sheet = workbook.GetSheetAt(0);

            for (int rowNo = 0; rowNo <= sheet.LastRowNum; rowNo++)
            {
                var row = sheet.GetRow(rowNo);
                if (row == null) // null is when the row only contains empty cells 
                    continue;
                for (int cellNo = 0; cellNo <= row.LastCellNum; cellNo++)
                {
                    var cell = row.GetCell(cellNo);
                    if (cell == null) // null is when the cell is empty
                        continue;
                    var topBorderStyle = cell.CellStyle.BorderTop;
                    if (topBorderStyle != BorderStyle.None)
                    {
                        MessageBox.Show(string.Format("Cell row: {0} column: {1} has TopBorder: {2}", cell.Row.RowNum, cell.ColumnIndex, topBorderStyle));
                    }
                }
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM