0

C# を使用して Excel シート (.xslx) の値を読み取るために、spreadsheetlight ライブラリを使用しています。

次のコードを使用してセル値を読み取ることができます

 for (int col = stats.StartColumnIndex; col <= stats.EndColumnIndex; col++)
     {              
         var value= sheet.GetCellValueAsString(stats.StartRowIndex, col);  //where sheet is current sheet in excel file    
     }

セル値を取得しています。しかし、どうすればセルのデータ型を取得できますか? ドキュメントをチェックインしましたが、解決策が見つかりませんでした。

注: .xls タイプの Excel ファイルの場合、以下のコードを使用してセルのデータ型を簡単に取得できる ExcelLibrary.dll ライブラリを使用しています。

for (int i = 0; i <= cells.LastColIndex; i++)
     {
         var type = cells[0, i].Format.FormatType;
     }

しかし、スプレッドシートライトには同様の方法はありません。

4

4 に答える 4

0

セルの値を取得するには、次のコードを試してください

 var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;

詳細については、このリンクを使用してください

于 2014-03-25T06:27:22.663 に答える
0

SLCell.DataType プロパティを確認してください。Spreadsheetlight のドキュメントには、これがクラス Spreadsheetlight.SLCell の Cell データ型を返すことが記載されています。

public CellValues DataType { get; set; }

PS: 余談ですが、chm のドキュメントを開く方法がわかりました。Winzip で chm ファイルを開いてみてください。問題なく開きます。

それが役に立てば幸い。ありがとう

于 2014-03-25T09:22:41.670 に答える
0

さて、多くの試行錯誤の方法の後、私はこれに対する解決策を見つける必要がありました.

セルのformatCodeに基づいて、セルのformatTypeを決定できます。

GetCellStyleメソッドを使用して、セルのフォーマットコードを取得できます。このformatCodeを使用して、 formatTypeを決定できます。

var FieldType = GetDataType(sheet.GetCellStyle(rowIndex, columnIndex).FormatCode);


private string GetDataType(string formatCode)
    {
        if (formatCode.Contains("h:mm") || formatCode.Contains("mm:ss"))
        {
            return "Time";
        }
        else if (formatCode.Contains("[$-409]") || formatCode.Contains("[$-F800]") || formatCode.Contains("m/d"))
        {
            return "Date";
        }
        else if (formatCode.Contains("#,##0.0"))
        {
            return "Currency";
        }
        else if (formatCode.Last() == '%')
        {
            return "Percentage";
        }
        else if (formatCode.IndexOf("0") == 0)
        {
            return "Numeric";
        }
        else
        {
            return "String";
        }
    } 

この方法は、99% のケースで有効でした。

お役に立てば幸いです。

于 2014-04-23T06:53:09.827 に答える