ファイル分割

Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能について説明します。

シート単位のファイル分割

Antenna House Office Servers SpreadSheet API V0.1 のファイル分割機能では、複数シートからなるExcelファイルをシート単位で別ファイルとして保存することが可能です。
シート単位のファイル分割の例は以下の通りです。

Split Per Sheet Example

コーディング例(C#)

以下が、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が一致するシート単位でグループとして別ファイルに保存されます。

Split Per Group Example

コーディング例(C#)

以下が、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ファイルから指定したシートを別ファイルとして保存することが可能です。
指定したシートを別ファイルとして保存する例は以下の通りです。

Extract Specific Sheet Example

コーディング例(C#)

以下が、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
}