Apache MetaModel をプロジェクトに組み込もうとしていますが、奇妙な問題が発生し続けています。コードで Excel スプレッドシートの行を更新します。コードは適切な行を見つけて削除し、その行を (私の更新で) スプレッドシートの一番下に追加します。同じデータが同じ行にとどまるように、更新をインプレースで行いたいと思います。私はそれが間違っていると思ったので、ばかげた単純なプロジェクトをセットアップして動作を複製しました。残念ながら、問題は残っています。
xlsx ファイルは次のとおりです。
Name Address City State Zip
Bob 123 Main St. Norman OK 11111
Fred 989 Elm Street Chicago IL 22222
Mary 555 First Street San Francisco CA 33333
ここで、Bob の Zip を「なし」に更新したいと思います。
package MMTest;
import java.io.File;
import org.apache.metamodel.UpdateableDataContext;
import org.apache.metamodel.excel.ExcelDataContext;
import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.Schema;
import org.apache.metamodel.schema.Table;
import org.apache.metamodel.update.Update;
public class MMTest {
public static void main(String[] args) {
UpdateableDataContext excel = new ExcelDataContext(new File("C:/test/test.xlsx"));
Schema schema = excel.getDefaultSchema();
Table[] tables = schema.getTables();
assert tables.length == 1;
Table table = schema.getTables()[0];
Column Name = table.getColumnByName("Name");
Column Zip = table.getColumnByName("Zip");
excel.executeUpdate(new Update(table).where(Name).eq("Bob").value(Zip, "None"));
}
}
かなり単純ですよね?いいえ。結果は次のとおりです。
Name Address City State Zip
<blank line>
Fred 989 Elm Street Chicago IL 22222
Mary 555 First Street San Francisco CA 33333
Bob 123 Main St. Norman OK None
簡単なものがありませんか?ドキュメントはかなりまばらですが、このパッケージについてインターネットで提供されているものはすべて読みました。お時間をいただきありがとうございます。