Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能について説明します。
Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能では、複数シートからなるExcelファイルをシート単位で別ファイルとして保存することが可能です。
シート単位のファイル分割の例は以下の通りです。
以下が、C#で上記のExcelファイルをシート単位でファイル分割し、分割結果を「ファイル名_シート名.xlsx」で保存する例です。
[Install directory]/samples/testFiles/SampleFiles.zipにサンプルファイルを含んでいます。
try { // シート単位に分割するファイルストリーム using var inputStream = new FileStream("SplitPerSheet_Example.xlsx", FileMode.Open); // 分割したシート名とストリームを格納する連想配列を用意 var sheetStreamTable = new Dictionary<string, MemoryStream>(); // ファイル分割オブジェクトの生成 var splitFileTools = new SplitFileTools(); // シート単位のファイル分割を実行 splitFileTools.SplitFile( inputStream, (string sheetName) => { sheetStreamTable.Add(sheetName, new MemoryStream()); return sheetStreamTable[sheetName]; }, (Stream stream) => {stream.Flush();}, SplitFileTools.SplitType.PerSheet); foreach (var sheetStream in sheetStreamTable) { // 出力ファイルストリーム using var outputStream = new FileStream("SplitPerSheet_Example_" + sheetStream.Key + ".xlsx", FileMode.Create); // 分割結果の書き込み sheetStream.Value.WriteTo(outputStream); sheetStream.Value.Close(); } } catch (AHOOXMLManagerException ahe){ // Do Someting }
Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能では、複数シートからなるExcelファイルを参照を考慮したグループ単位で別ファイルとして保存することが可能です。
参照を考慮したグループ単位の例は以下の通りです。
以下の例では、"xxxグラフ"シートのグラフデータが"xxx"シートに定義されているため、xxxが一致するシート単位でグループとして別ファイルに保存されます。
以下が、C#で上記のExcelファイルを参照を考慮したグループ単位でファイル分割し、分割結果を「ファイル名_シート名.xlsx」で保存する例です。
[Install directory]/samples/testFiles/SampleFiles.zipにサンプルファイルを含んでいます。
try { // 参照を考慮したグループ単位に分割するファイルストリーム using var inputStream = new FileStream("SplitPerGroup_Example.xlsx", FileMode.Open); // 分割したシート名とストリームを格納する連想配列を用意 var sheetStreamTable = new Dictionary<string, MemoryStream>(); // ファイル分割オブジェクトの生成 var splitFileTools = new SplitFileTools(); // 参照を考慮したグループ単位のファイル分割を実行 splitFileTools.SplitFile( inputStream, (string sheetName) => { sheetStreamTable.Add(sheetName, new MemoryStream()); return sheetStreamTable[sheetName]; }, (Stream stream) => {stream.Flush();}, SplitFileTools.SplitType.PerGroup); foreach (var sheetStream in sheetStreamTable) { // 出力ファイルストリーム using var outputStream = new FileStream("SplitPerGroup_Example_" + sheetStream.Key + ".xlsx", FileMode.Create); // 分割結果の書き込み sheetStream.Value.WriteTo(outputStream); sheetStream.Value.Close(); } } catch (AHOOXMLManagerException ahe){ // Do Someting }
Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能では、複数シートからなるExcelファイルから指定したシートを別ファイルとして保存することが可能です。
指定したシートを別ファイルとして保存する例は以下の通りです。
以下が、C#で上記のExcelファイルから指定したシートを抽出し、結果を「ファイル名_シート名.xlsx」で保存する例です。
[Install directory]/samples/testFiles/SampleFiles.zipにサンプルファイルを含んでいます。
try{ // シートを抽出するファイルストリーム using var inputStream = new FileStream("5月データ.xlsx", FileMode.Open); // 出力ファイルストリーム using var outputStream = new FileStream("", FileMode.Create); // 抽出シート名 string[] sheetNames = { "","" }; // ファイル分割オブジェクトの生成 var splitFileTools = new SplitFileTools(); // シート抽出を実行 splitFileTools.ExtractSheetsBySheetNames(inputStream, outputStream, sheetNames); } catch (AHOOXMLManagerException ahe){ // Do Someting }