SQLの窓

2021年01月14日


FileZilla のインストール時のポイント

ダウンロード時に、グリーンのボタンをクリックするとインストーラバージョンがダウンロードできますが、それを実行すると他のセキュリティソフトをインストールさせようとするので、グリーンのボタンの下から ( recommended ) をダウンロードして実行すれば普通に使えます。






▼ グリーンのボタンを押すと



▼ 右側をダウンロードしてインストールしようとすると...






設定

▼ ファイルの編集 直接サーバを編集するような感じでアップロードできるようになっています。( このエディタで開く場合、テンポラリを使用してダウンロードして開きます ) ▼ UTF-8 にしておくと 間違って日本語ファイルをアップロードしてしまっても化けません ▼ パスワードを保存してしまうと 設定ファイルに BASE64 で保存されるので、自宅以外では避けたほうがいいです
定義ファイルのあるフォルダは、『C:\Users\ユーザー\AppData\Roaming\FileZilla』ですが、以下のスクリプトで開く事ができます。
Set obj = CreateObject("Shell.Application")
Set objFolder = obj.NameSpace( &h1a )
obj.Explore(objFolder.Self.Path&"\FileZilla")
Set obj = Nothing


サイトの情報は、この場所の sitemanager.xml に書き込まれており、他の PC で書き換えてそのまま使用できます



【フリーソフトの最新記事】
posted by lightbox at 2021-01-14 10:00 | フリーソフト | このブログの読者になる | 更新情報をチェックする

2021年01月13日


デバイスを探す / Find My Device - Google / Android Find



デバイスを探す

https://www.google.com/android/find

URL が android find と分かりやすいので、これで Google 検索すればいいと思います。

Android でログインしているアカウントでブラウザからログインする

すぐにマップで場所が特定できて、充電状態も解ります。単に身の回りのどこかを探したい場合は『音を鳴らす』でマナーモードとは関係無く音が鳴ります。

紛失または盗難の場合は、ロックをかけます

忘れる事が無いパスワードを設定します。普段ロックをかけていなくてもこれでロックが間に合えば、登録しているアプリを通じた問題は避けれるはずです。

データを全て消去も可能

状況によってすぐに全ての安全を確保したいのであれば、データを全て削除してしまえば『廃棄』という最後の手段が使えますね。
posted by lightbox at 2021-01-13 16:07 | Android | このブログの読者になる | 更新情報をチェックする

2020年11月28日


Java : Apache POI で最低限の処理を標準化( ここではワークブックは新規作成 )

最新の Excel( .xslx ) 用 XSSF に必要な jar

Apache POI Apache Commons Collections Apache Commons Compress 4.1 ドキュメント

サンプル

オーバーロードを使用して、できるだけ cell というメソッドでできるようにしてみました。Microsoft の仕様に合わせて行や列を 1 始まりにしたかったという意図もあります。
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;

public class Main {

    private static XSSFWorkbook book;
    private static XSSFSheet  sheet;

    // *****************************************************
    // エントリポイント
    // *****************************************************
    public static void main(String[] args) {
        try {
            // ****************************
            // ブック作成
            // ****************************
            book = XSSFWorkbookFactory.createWorkbook();

            // ****************************
            // シート作成
            // ****************************
            sheet = book.createSheet("Javaの処理");

            // ****************************
            // セルに値を直接セット
            // ****************************
            for (int i = 1; i <= 10; i++)
            {
                cell( sheet, i, 1, String.format("処理 : %d", i ));
            }

            // ****************************
            // セルの幅( 3列目 )
            // ****************************
            cellWidth( sheet, 3, 6000 );

            // ****************************
            // セルの結合
            // ****************************
            cell( sheet, 1, 3, 1, 5 );
            // 結合されたセルに値をセット
            cell( sheet, 1, 3, "結合されたセル" );
            
            // ****************************
            // 日付のセット
            // ****************************
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            cell( sheet, 3, 3, dateFormat.parse("2020/11/27") );

            // ****************************
            // 値のセット
            // ****************************
            cell( sheet, 4, 3, 1000 );
            cell( sheet, 5, 3, 1234567890 );
            cell( sheet, 6, 3, "日本語" );
            cell( sheet, 7, 3, "ABCDEFG abcdefg" );

            // ****************************
            // 式のセット
            // ****************************
            getCell( sheet, 8, 3 ).setCellFormula( "A1" );

            // ****************************
            // 罫線
            // ****************************
            cell( sheet, 3, 3, 10, 5, BorderStyle.DOUBLE );

            // ****************************
            // セルの値を表示
            // ****************************
            for (int i = 1; i <= 10; i++)
            {
                System.out.println( cell( sheet, i, 3 ) );
            }

            // ****************************
            // 書き込み用のファイルストリーム
            // ****************************
            FileOutputStream fos = new FileOutputStream("sample.xlsx");
            
            // ****************************
            // 保存と終了
            // ****************************
            book.write(fos);
            book.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    // ****************************
    // セル( XSSFCell ) を取得
    // ****************************
    static XSSFCell getCell(XSSFSheet sheet, int row, int col) {

        XSSFRow xslRow = sheet.getRow(row - 1);
        if ( xslRow == null ) {
            // 行を作成
            xslRow = sheet.createRow( row - 1 );
        }

        XSSFCell cell = xslRow.getCell( col - 1 );
        if ( cell == null ) {
            // セルを作成
            cell = xslRow.createCell( col - 1 );
        }
        return cell;

    }
    // ****************************
    // セルに書き込む
    // ****************************
    // 文字列
    static void cell(XSSFSheet sheet, int row, int col, String value) {

        XSSFCell cell = getCell(sheet, row, col);
        cell.setCellValue(value);

    }
    // 数値
    static void cell(XSSFSheet sheet, int row, int col, double value) {

        XSSFCell cell = getCell(sheet, row, col);
        cell.setCellValue(value);

    }
    // 日付 : BuiltinFormats で定義された値(14) を使用
    static void cell(XSSFSheet sheet, int row, int col, Date value) {

        XSSFCell cell = getCell(sheet, row, col);
        XSSFCellStyle style = sheet.getWorkbook().createCellStyle();
        // Class BuiltinFormats より "m/d/yy"
        style.setDataFormat(14);
        cell.setCellStyle(style);
        cell.setCellValue(value);

    }
    
    // ****************************
    // セル読み込む
    // ****************************
    static String cell(XSSFSheet sheet, int row, int col) {

        XSSFRow xslRow = sheet.getRow(row - 1);
        if ( xslRow == null ) {
            return "";
        }

        XSSFCell cell = xslRow.getCell( col - 1 );
        if ( cell == null ) {
            return "";
        }

        CellType type = cell.getCellType();
        // 文字列
        if ( type == CellType.STRING ) {
            return cell.getStringCellValue();
        } 
        if ( type == CellType.NUMERIC ) {
            // 日付
            if( org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell) ) {
                SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
                return sdf.format( cell.getDateCellValue() );
            }
            // 数値
            else {
                return String.format("%f", cell.getNumericCellValue());
            }
        } 
        // 式
        if ( type == CellType.FORMULA ) {
            return cell.getCellFormula();
        }
        
        String result = cell.getRawValue();
        if ( result == null ) {
            result = "";
        }

        return result;

    }

    // ****************************
    // セルの幅
    // ****************************
    static void cellWidth(XSSFSheet sheet, int col, int width) {

        sheet.setColumnWidth(col-1, width);

    }

    // ****************************
    // セルの結合
    // ****************************
    static void cell(XSSFSheet sheet, int row1, int col1, int row2, int col2) {

        sheet.addMergedRegion( new CellRangeAddress(row1-1, row2-1, col1-1, col2-1) );

    }

    // ****************************
    // 範囲の外側の罫線
    // ****************************
    static void cell(XSSFSheet sheet, int row1, int col1, int row2, int col2, BorderStyle borderStyle ) {

        CellRangeAddress region = new CellRangeAddress(row1-1, row2-1, col1-1, col2-1);

        RegionUtil.setBorderTop( borderStyle, region, sheet );
        RegionUtil.setBorderBottom( borderStyle, region, sheet );
        RegionUtil.setBorderLeft( borderStyle, region, sheet );
        RegionUtil.setBorderRight( borderStyle, region, sheet );

    }

}

実行結果

読込みは以下のような感じで

XSSFWorkbook book = XSSFWorkbookFactory.createWorkbook(new FileInputStream("sample.xlsx"));

関連する記事

JScript : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する Python : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
posted by lightbox at 2020-11-28 20:36 | Java | このブログの読者になる | 更新情報をチェックする

2020年11月26日


Python : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する



pywin32 の利用

Python で Excel を扱うパッケージは openpyxl ですが、Excel の仕様に合わせてファイルを作成しているだけなので、Autofill が利用できません。そこで、ここでは pywin32 を使用して Excel.Application を直接操作します( 実行する PC は Windows で Excel がインストールされている必要があります )。

その前に pip そのものの更新確認

python -m pip install --upgrade pip
先日 pip からアップグレードしようとしたら、見事にバグって pip が無くなってしまいました。その場合は https://bootstrap.pypa.io/get-pip.py から get-pip.py をダウンロードして python get-pip.py を実行します。 それ以降、python から アップグレードするようにしています。

pywin32 のインストール

pip install pywin32
pywin32 は、Windows の COM を処理する為のブリッジです。ですから、Excel.Application に限らず 以下のようなクラスを利用できるようになります。 ✅ ADODB.Connection ✅ ADODB.Recordset ✅ ADODB.Stream ✅ WScript.Shell ✅ Shell.Application ✅ Scripting.FileSystemObject ✅ Msxml2.ServerXMLHTTPCDO.Message ✅ Scripting.Dictionary ▼ pip list

excel-autofill.py

Autofill する為に範囲を選択していますが、Sheet.Cells(1, 2) のように数字で全て表現できるようにしています。これはプログラミングを容易にする事が目的ですが、視認しやすいように Range("A1:A2") と言うような記述方法も可能です
import win32com.client
import traceback
import sys
import os

ExcelApp = win32com.client.Dispatch("Excel.Application")
# デバッグ時は、Excel の本体を表示させて状況が解るようにする
ExcelApp.Visible = True
# UI でチェックさせるようなダイアログを表示せずに実行する
ExcelApp.DisplayAlerts = False

try:
    # ****************************
    # ブック追加
    # ****************************
    Book = ExcelApp.Workbooks.Add()

    # 通常一つのシートが作成されています
    Sheet = Book.Worksheets( 1 )

    # ****************************
    # シート名変更
    # ****************************
    Sheet.Name = "Pythonの処理";

    # ****************************
    # セルに値を直接セット
    # ****************************
    for i in range(1, 11):
        Sheet.Cells(i, 1).Value = f"処理 : {i}"

    # ****************************
    # 1つのセルから
    # AutoFill で値をセット
    # ****************************
    Sheet.Cells(1, 2).Value = "子"
    # 基となるセル範囲
    SourceRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(1,2))
    # オートフィルの範囲(基となるセル範囲を含む )
    FillRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(10,2))
    SourceRange.AutoFill(FillRange)

    # ****************************
    # 保存
    # ****************************
    Book.SaveAs( os.getcwd() + "\\sample.xlsx" )

except Exception:
    ExcelApp.Quit()
    traceback.print_exc()
    sys.exit( )


ExcelApp.Quit()
print("処理を終了します")

openpyxl で Autofill 無しの処理

import openpyxl
import traceback
import sys

try:
    # ****************************
    # 新しいブックを作成
    # ****************************
    Book = openpyxl.Workbook()

    # ****************************
    # 通常一つのシートが作成されています
    # ****************************
    Sheet = Book.worksheets[0]

    # ****************************
    # シート名変更
    # ****************************
    Sheet.title = "Pythonの処理"

    # ****************************
    # セルに値を直接セット
    # ****************************
    for i in range(1, 11):
        Sheet.cell(i, 1, f"処理 : {i}")

    Sheet.merge_cells("C1:F1")
    Sheet.cell(1, 3).value = "結合されたセル"

    Book.save('sample.xlsx')

except Exception:
    traceback.print_exc()
    sys.exit( )

print("処理を終了します")

関連する記事

JScript : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する

関連する Microsoft ドキュメント

Application オブジェクト Workbook オブジェクトのコレクション Workbook オブジェクト Worksheet オブジェクトのコレクション Worksheet オブジェクト Cells プロパティ
posted by lightbox at 2020-11-26 16:03 | Python | このブログの読者になる | 更新情報をチェックする

C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する



Range オブジェクトの作成に数値を使用します

プログラミングで処理を行うので、Range("A1:A20") というような表現を使わずに、Cells(行,列) を使って Range オブジェクトを作成しています。
using System;

namespace excel_2020_11_26
{
	class Program
	{
		static void Main(string[] args)
		{
			// Excel アプリケーション
			dynamic ExcelApp = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
			// Excel のパス
			string path = Environment.CurrentDirectory + @"\sample.xlsx";

			// Excel を表示( 完成したらコメント化 )
			ExcelApp.Visible = true;
			// 警告を出さない
			ExcelApp.DisplayAlerts = false;

			try
			{
				// ****************************
				// ブック追加
				// ****************************
				dynamic Book = ExcelApp.Workbooks.Add();

				// 通常一つのシートが作成されています
				dynamic Sheet = Book.Worksheets(1);

				// ****************************
				// シート名変更
				// ****************************
				Sheet.Name = "C#の処理";

				// ****************************
				// セルに値を直接セット
				// ****************************
				for (int i = 1; i <= 10; i++)
				{
					Sheet.Cells(i, 1).Value = "処理 : " + i;
				}

				// ****************************
				// 1つのセルから
				// AutoFill で値をセット
				// ****************************
				Sheet.Cells(1,2).Value = "子";
				// 基となるセル範囲
				dynamic SourceRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(1, 2));
				// オートフィルの範囲(基となるセル範囲を含む )
				dynamic FillRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(10, 2));
				SourceRange.AutoFill(FillRange);


				// ****************************
				// 保存
				// ****************************
				Book.SaveAs(path);
			}
			catch (Exception ex)
			{
				ExcelApp.Quit();
				System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);
				Console.WriteLine(ex.Message);
				return;
			}

			ExcelApp.Quit();
			// 解放
			System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);

			Console.WriteLine("処理を終了します");

		}
	}
}


関連する記事

JScript : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する

関連する Microsoft ドキュメント

Application オブジェクト Workbook オブジェクトのコレクション Workbook オブジェクト Worksheet オブジェクトのコレクション Worksheet オブジェクト Cells プロパティ
posted by lightbox at 2020-11-26 13:47 | VS(C#) | このブログの読者になる | 更新情報をチェックする

2020年11月23日


JScript : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する




Range オブジェクトの作成に数値を使用します

プログラミングで処理を行うので、Range("A1:A20") というような表現を使わずに、Cells(行,列) を使って Range オブジェクトを作成しています。
// ****************************
// 初期処理
// ****************************
WScript.Echo( "処理を開始します" );
var WshShell = new ActiveXObject("WScript.Shell");
var ExcelApp = new ActiveXObject( "Excel.Application" );

// デバッグ時は、Excel の本体を表示させて状況が解るようにする
ExcelApp.Visible = true;
// UI でチェックさせるようなダイアログを表示せずに実行する
ExcelApp.DisplayAlerts = false;

try {

	// ****************************
	// ブック追加
	// ****************************
	var Book = ExcelApp.Workbooks.Add();

	// 通常一つのシートが作成されています
	var Sheet = Book.Worksheets( 1 );

	// ****************************
	// シート名変更
	// ****************************
	Sheet.Name = "JScriptの処理";

	// ****************************
	// セルに値を直接セット
	// ****************************
	for( var i = 1; i <= 10; i++ )
	{
		Sheet.Cells(i, 1) = "処理 : " + i;
	}

	// ****************************
	// 1つのセルから
	// AutoFill で値をセット
	// ****************************
	Sheet.Cells(1, 2) = "子";
	// 基となるセル範囲
	var SourceRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(1,2));
	// オートフィルの範囲(基となるセル範囲を含む )
	var FillRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(10,2));
	SourceRange.AutoFill(FillRange);

	// ****************************
	// 保存
	// ****************************
	Book.SaveAs( WshShell.CurrentDirectory + "\\sample.xlsx" );
 
} catch (error) {
	ExcelApp.Quit();
	ExcelApp = null;
	WshShell.Popup(error.description);
	WScript.Quit();	
}

ExcelApp.Quit();
ExcelApp = null;

// ****************************
// ファイルの最後
// ****************************
WshShell.Popup("処理を終了します");

関連する記事

JScript : Visual Studio Code で、WSH を使用する準備

JScript でエラーが発生した行を知る方法

実行プログラムが cscript.exe や wscript.exe の場合、try 〜 catch 内のエラー発生の行番号を知る事ができないので、以下の手順で処理します。
1) 拡張子を hta に変更する
2) WScript を使った実行をコメントにする
3) ソースの先頭に <script> ソースの最後に </script> を記述する
4) さらにソースの先頭に <meta http-equiv="x-ua-compatible" content="ie=edge"> を記述する
5) catch の中で、error.stack を表示する
6) エクスプローラからこのソースをダブルクリックする
    ( HTML アプリケーションホストで実行させる )




.hta 用コード

<meta http-equiv="x-ua-compatible" content="ie=edge">
<script>
// ****************************
// 初期処理
// ****************************
//WScript.Echo( "処理を開始します" );
var WshShell = new ActiveXObject("WScript.Shell");
var ExcelApp = new ActiveXObject( "Excel.Application" );

// デバッグ時は、Excel の本体を表示させて状況が解るようにする
ExcelApp.Visible = true;
// UI でチェックさせるようなダイアログを表示せずに実行する
ExcelApp.DisplayAlerts = false;

try {

    // ****************************
    // ブック追加
    // ****************************
    var Book = ExcelApp.Workbooks.Add();

    // 通常一つのシートが作成されています
    var Sheet = Book.Worksheets( 1 );

    // ****************************
    // シート名変更
    // ****************************
    Sheet.Name = "JScriptの処理";

    // ****************************
    // セルに値を直接セット
    // ****************************
    for( var i = 1; i <= 10; i++ )
    {
        Sheet.Cells(i, 1) = "処理 : " + i;
    }

    // ****************************
    // 1つのセルから
    // AutoFill で値をセット
    // ****************************
    Sheet.Cells(1, 2) = "子";
    // 基となるセル範囲
    var SourceRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(1,2));
    // オートフィルの範囲(基となるセル範囲を含む )
    var FillRange = Sheet.Range(Sheet.Cells(1, 2), Sheet.Cells(10,2));
    SourceRange.utoFill(FillRange);

    // ****************************
    // 保存
    // ****************************
    Book.SaveAs( WshShell.CurrentDirectory + "\\sample.xlsx" );


} catch (error) {
    ExcelApp.Quit();
    ExcelApp = null;
    WshShell.Popup(error.description + error.stack);
    WScript.Quit();    
}

ExcelApp.Quit();
ExcelApp = null;

// ****************************
// ファイルの最後
// ****************************
WshShell.Popup("処理を終了します");
</script>


関連する Microsoft ドキュメント

Application オブジェクト Workbook オブジェクトのコレクション Workbook オブジェクト Worksheet オブジェクトのコレクション Worksheet オブジェクト Cells プロパティ
posted by lightbox at 2020-11-23 19:47 | WSH JScript | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり