私は優れています。他のリソースからデータを読み込むためにExcelファイルにマクロを作成します。毎秒マクロが実行され、そのExcelセルが更新されます。JavaからマクロでExcelを読む
今、毎秒Excelのデータを読み込むためのJavaプログラムを作成したいと思います。私はApache POIを試してみましたが、documentationを確認した後、tiは読み込みをサポートしていません。
私はいくつかのリソースから読んでいます。Java Com Bridge(JCOB
)は、マクロを使って読むことができます。私は試しましたが、セルの値はまだ私のコードを試して毎回更新されていません。
import com.jacob.com.*;
import com.jacob.activeX.*;
public class ExcelTest {
private static ActiveXComponent xl;
private static Dispatch workbooks = null;
private static Dispatch workbook = null;
private static Dispatch sheet = null;
private static String filename = null;
private static boolean readonly = false;
public static void main(String[] args) {
String file = "D:\\tutorial\\ApachePoi\\ratesource.xls";
OpenExcel(file, false); // do not show false to open Excel
System.out.println(GetValue("B46"));
}
private static void OpenExcel(String file, boolean f) {
try {
filename = file;
xl = new ActiveXComponent("Excel.Application");
xl.setProperty("Visible", new Variant(f));
workbooks = xl.getProperty("Workbooks").toDispatch();
workbook = Dispatch.invoke(
workbooks,
"Open",
Dispatch.Method,
new Object[] { filename, new Variant(false),
new Variant(readonly) },// whether to open read-only
new int[1]).toDispatch();
} catch (Exception e) {
e.printStackTrace();
}
}
// Read value
private static String GetValue(String position) {
if (workbook == null) {
System.out.println("workbook is null");
}
sheet = Dispatch.get(workbook, "ActiveSheet").toDispatch();
Object cell = Dispatch.invoke(sheet, "Range", Dispatch.Get,
new Object[]{position}, new int[1]).toDispatch();
String value = Dispatch.get((Dispatch) cell, "Value").toString();
return value;
}
//1.3638356164383563
//1.3638356164383563
private static void SetValue (String position, String type, String value)
{
}
}
現在のシステムがExcelを使用して他のリソースからデータを読み込みます。私の仕事は、インターネット上のいくつかのウェブサイトにデータを公開するプログラムを作成することです。 シートには2つのテーブルがありますが、ODBCを使用すると効果的ではないと思います。 –
Excelで作業が必要な場合は、Excelデータファイルを解析せずにExcelと会話する必要があります。 –
Excelと話すのはどういう意味ですか?申し訳ありませんが、私の英語は十分ではありません。 –