スキップしてメイン コンテンツに移動

投稿

WinHttp.WinHttpRequestを使ってHttp PostでByte配列やString配列を送信するプログラム(Excel VBA)

WinHttp.WinHttpRequestオブジェクトを使って使ってHttp PostでByte配列のデータを送信するExcel VBAプログラムです。 WinHttp.WinHttpRequestを使う際には、 1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。 2. 表示されたダイアログからMicrosoft WinHTTP Serviceにチェックを入れる。 という手順が必要です。 Byte配列をPOST Private Const BOUNDARY As String = "SOMETHING" Private Function httpPostServletByte(url As String, data() As Byte) As Byte() On Error GoTo e Dim WinHttpReq As WinHttp.WinHttpRequest If (WinHttpReq Is Nothing) Then Set WinHttpReq = New WinHttpRequest End If WinHttpReq.Open "POST", url, False WinHttpReq.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded; boundary=" & BOUNDARY WinHttpReq.send data Dim response() As Byte: response = WinHttpReq.ResponseBody httpPostServletByte = response Set WinHttpReq = Nothing Exit Function e: Set WinHttpReq = Nothing Debug.Print "httpPost Error:" & Err.

ADODB.streamオブジェクトを使って文字列とByte配列を相互変換(Excel VBA)

ADODB.streamオブジェクトを使って文字列をByte配列に変換するコードのサンプルです。 ExcelVBAでADODB.streamを使う際には、 1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。 2. 表示されたダイアログからMicrosoft ActiveX Data Objectsにチェックを入れる。 という手順が必要です。 文字列からByte配列へ Private Function ADOS_EncodeStringToByte(ByVal cset As String, ByRef strUni As String) As Byte() On Error GoTo e Dim objStm As ADODB.stream: Set objStm = New ADODB.stream objStm.Mode = adModeReadWrite objStm.Open objStm.Type = adTypeText objStm.Charset = cset objStm.WriteText strUni objStm.Position = 0 objStm.Type = adTypeBinary Select Case UCase(cset) Case "UNICODE", "UTF-16" objStm.Position = 2 Case "UTF-8" objStm.Position = 3 End Select ADOS_EncodeStringToByte = objStm.Read() objStm.Close Set objStm = Nothing Exit Function e: Debug.Print "Error occurred while encoding characters" & Err.Description If objStm Is No

HTMLのMETAタグから文字エンコードを取得するコード

ExtractEncodingメソッドでRegexを使ってMETAタグからcharsetの部分を取り出しています。 Readメソッドでは、まず与えられたpathにあるhtmlファイルからExtractEncodingメソッドを使って適切な文字エンコードを取得します。その後取得した文字コードで読み取ったhtmlを変換しています。 using System; using System.Text; using System.Text.RegularExpressions; using System.IO; namespace Utility { public static class EncodingUtils { private static readonly Regex r = new Regex( @"<META\s+http-equiv\s*=\s*Content-Type\s+content=\s*""[^""]*\s+charset\s*=\s*(?<charset>[^""\s]*).*""\s*>", RegexOptions.IgnoreCase | RegexOptions.Compiled); public static string ExtractEncoding(string html) { string result = null; lock (r) { Match m = r.Match(html); if (m.Success) { result = m.Groups["charset"].Value; } } return result; }

ThreadPoolクラスのサンプル

ThreadPoolクラスのサンプルです。C#のソースコードを以下に示します。もっと有益な情報を載せないといけませんね。 using System; using System.Threading; namespace Test { public static class ThreadPoolTest { public static void RunThread() { ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod), "A"); Console.ReadLine(); } private static void ThreadMethod(object state) { for (int i = 0; i < 10; i++) { System.Console.WriteLine(state+":"+i); Thread.Sleep(1000); } } } }

XmlTextReaderの使い方

備忘録としてSystem.Xml.XmlTextReaderのサンプルを載せておきます。 public static void ReadXMLSample(string path) { for (XmlReader textReader = new XmlTextReader(path); textReader.Read(); textReader.MoveToElement()) { Console.WriteLine("==================="); Console.WriteLine("Name:" + textReader.Name); Console.WriteLine("Base URI:" + textReader.BaseURI); Console.WriteLine("Local Name:" + textReader.LocalName); Console.WriteLine("Attribute Count:" + textReader.AttributeCount); Console.WriteLine("Depth:" + textReader.Depth); Console.WriteLine("Node Type:" + textReader.NodeType); } }

XmlTextWriterの使い方

備忘録としてSystem.Xml.XmlTextWriterのサンプルを載せておきます。 pathにxmlファイルを作成して保存するC#のプログラムです。 public static void CreateXMLSample(string path) { XmlTextWriter writer = new XmlTextWriter(path, Encoding.Default); writer.WriteStartDocument(true); writer.WriteStartElement("root"); for (int i = 0; i < 3; i++) { writer.WriteStartElement("element"); writer.WriteStartAttribute("path"); writer.WriteValue(@"c:\temp\test.txt"); writer.WriteEndAttribute(); for (int j = 0; j < 3; j++) { writer.WriteStartElement("attr"); writer.WriteStartAttribute("type"); writer.WriteValue("integer"); writer.WriteEndAttribute(); writer.WriteStartAttribute("value"); writer.WriteValue(j); writer.WriteEndAttribute(); writer.WriteEndElement(); } writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); }

Python関連のリンク集・書籍

関連サイト Python公式サイト Python Tutorial ActivePython PythonWeb (Japanease) Effective Python すぐに忘れる脳みそのためのメモ ここのブログはHaskellについての投稿も充実しています。 RSS Feedのパーサモジュール Universal Feed Parser 数学関数のライブラリ(配列、行列計算で便利) NumPy kVerifeir Lab さんの ここのページ が参考になります。 書籍 Python クックブック 第2版 (Oreilly) Pythonクイックリファレンス(Oreilly) 初めてのPython 第3版(Oreilly) 柴田 淳著: みんなのPython