ファイル分割
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
}