2

I've got this code to apply a "header" (big, top-of-the-sheet "title") to a sheet:

// Initialize
private static SLDocument sl;
. . .
sl = new SLDocument();

// Create a Style
SLStyle styleHeading = sl.CreateStyle();
styleHeading.SetFont(FontSchemeValues.Major, 36);
styleHeading.Font.Italic = true;
styleHeading.Font.FontName = "Candara";

// Create a Defined Name (Range) and give it a value and style
sl.SetDefinedName("UnitName", "Sheet1!$A$1:$A$13"); 
sl.SetCellValue("UnitName", "Pennsylvania Platypi Presumptuously Parasailing");
sl.SetCellStyle("UnitName", styleHeading);

// Save the sheet
string appDataFolder = HttpContext.Current.Server.MapPath("~/App_Data/");
string spreadsheetLightFilename = "PlatypiTest.xlsx";
string fullspreadsheetLightPath = Path.Combine(appDataFolder, spreadsheetLightFilename);
sl.SaveAs(fullspreadsheetLightPath);

Note: I verified that "Sheet1" was right with this code:

var nameList = sl.GetSheetNames();
string s = nameList[0]; // "s" is "Sheet1"

The file is created and saved, but it is devoid of content; when I open it, cell A1 is highlighted, but is content-free.

Am I missing a vital step, or going about this completely wrong?

4

2 に答える 2

1

あなたがしていることは論理的には問題ありません。

この行

sl.SetDefinedName("UnitName", "Sheet1!$A$1:$A$13"); 

実際に名前付き範囲を作成します。結果のファイルを Excel で開き、セル セレクターを見ると、それを確認できます。

ここに画像の説明を入力

またはネームマネージャー:

ここに画像の説明を入力

問題は、Spreadsheet Light が定義済みの名前を非常に基本的にサポートしていることです。基本的にできることは、名前を作成して数式内で使用することだけです。コンテンツを操作するすべてのメソッドは、単一のセル参照を想定しています。ところで、有効なセル参照を渡さない場合、これらのメソッドはすべて例外をスローしませんが、bool成功/失敗を示します。

たとえば、コードを次のように変更した場合

bool success1 = sl.SetCellValue("UnitName", "Pennsylvania Platypi Presumptuously Parasailing");
bool success2 = sl.SetCellStyle("UnitName", styleHeading);

success両方の変数がであることがわかりますfalse

簡単に言うと、何かのコンテンツを Excel ファイルに取り込みたい場合は、セルごとに行う必要があります。通常の (名前のない) 範囲もサポートしていません。

于 2016-04-01T18:08:02.390 に答える
0

理論的には、少なくとも、次のようにすることができます。

// from http://stackoverflow.com/questions/36481802/what-is-the-analogue-to-excel-interops-worksheet-usedrange-rows-in-spreadsheet
var stats = sl.GetWorksheetStatistics();
var rowcount = stats.NumberOfRows;

SLStyle entireSheetRangeStyle = sl.CreateStyle();
entireSheetRangeStyle.// (set style vals)
. . .
sl.SetRowStyle(1, rowcount, entireSheetRangeStyle);
于 2016-04-07T17:54:00.770 に答える