インポートファイルとして使用するには、CSVファイルに変換する必要があるスペイン語の文字(チルダなど)を含むExcelファイルがあります。ただし、[名前を付けてCSVに保存]を実行すると、ASCII文字ではない「特殊な」スペイン語文字が破損します。また、これは、左右の引用符と、MacでExcelファイルを作成している元のユーザーから来たように見える長いダッシュを使用しているようです。
CSVは単なるテキストファイルなので、UTF8エンコーディングを処理できると確信しています。したがって、これはExcelの制限であると思いますが、ExcelからCSVに変換し、非ASCII文字を保持する方法を探しています。無傷。
OpenOffice の表計算アプリケーションCalcは、CSVデータの処理に非常に優れています。
[名前を付けて保存...]ダイアログで、[フォーマットオプション]をクリックしてCSVのさまざまなエンコードを取得します。 LibreOffice は同じように動作します。
Excelシートを "Unicode Text(.txt)"として保存します。良いニュースは、すべての国際文字がUTF16であることです(注、UTF8ではありません)。ただし、新しい「* .txt」ファイルはタブ区切りで、カンマ区切りではないため、本当のCSVファイルではありません。
(オプション)インポートにTAB区切りファイルを使用できない場合を除き、好みのテキストエディタを使用してTAB文字をカンマ "、"に置き換えます。
ターゲットアプリケーションに* .txtファイルをインポートします。それがUTF16フォーマットを受け入れることができることを確認してください。
UTF-16がBMP以外のコードポイントをサポートするように正しく実装されていれば、情報を失うことなくUTF-16ファイルをUTF-8に変換できます。好きな方法を見つけるためにあなたに任せます。
この手順を使用して、ExcelからMoodleにデータをインポートします。
私はこれが古い質問であることを知っています、しかし私はOPと同じ問題に苦しんでいる間この質問にたどり着きました。
提供されたソリューションのどれも実行可能な選択肢を見つけられなかったので、私はExcelを使用してこれをする方法があるかどうか発見することに着手しました。
幸い、xlsx形式からcsv形式への保存時に(私の場合)失われた文字の問題が発生することがわかりました。 xlsxファイルを最初にxlsに、次にcsvに保存してみました。それは実際にうまくいきました。
試してみて、それがあなたのために機能するかどうかを確認してください。がんばろう。
これを行う唯一の「簡単な方法」は次のとおりです。まず、表示される内容とExcelの.csvファイルに表示されない内容との間に違いがあることを理解してください。
(1) 情報があるExcelファイルを開く(.xls、.xlsx)
(2) Excelでは、ファイルの種類として「CSV(Comma Delimited)(* .csv)」を選択し、その種類として保存します。
(3) NOTEPAD([スタート]メニューの[プログラム]、[アクセサリ]の順)で、保存した.csvファイルをメモ帳で開きます。
(4) それから - >名前を付けて保存...を選択し、 "名前を付けて保存"ボックスの一番下に "エンコーディング"というラベルの付いた選択ボックスがあります。 UTF-8を選択してください(ANSIを使用しないでください。アクセントをすべて失うなど)。 UTF-8を選択したら、元のファイルとは少し異なるファイル名でファイルを保存します。
このファイルはUTF-8であり、すべての文字とアクセントを保持しており、例えばMySQLや他のデータベースプログラムにインポートすることができます。
この答えは このフォーラムの から取られます。
もう1つ便利なことがわかりました: " Numbers "はCSVとして保存するときにencoding-settingsを許可します。
あなたはサードパーティ製のソフトウェアなしで現代のWindowsマシンでこれを行うことができます。この方法は信頼性が高く、引用符付きのカンマ、引用符付きのタブ文字、CJK文字などを含むデータを処理します。
1.エクセルから保存
Excelでは、タイプUnicode Text (*.txt)
を使用してデータをfile.txt
に保存します。
2. PowerShellを起動します
スタートメニューからpowershell
を実行します。
3. PowerShellにファイルをロードします
$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode
4.データをCSVとして保存します
$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation
"nevets1219"はGoogleドキュメントについては正しいのですが、単にファイルを "インポート"してもUTF-8に変換されないことがよくあります。
しかし、CSVを既存のGoogleスプレッドシートにインポートすると、UTF-8に変換されます。
ここにレシピがあります:
結果のファイルはUTF-8になります
これにより、Excelによって保存された破損したCSVファイルが修正され、正しいエンコーディングで保存されます。
ExcelはCP-1252/Windows-1252に保存します。 CSVファイルをメモ帳++で開きます。選択する
Encoding > Character Sets > Western European > Windows-1252
それから
Encoding > Convert to UTF-8
File > Save
最初にNotepad ++にエンコーディング、 そして convertを伝えます。これらの他の答えのいくつかは最初に適切なエンコーディングを設定せずに変換していて、ファイルをさらに荒らしています。彼らは’
であるべきものを達
に変えるでしょう。あなたのキャラクターがCP-1252に収まらない場合は、CSVとして保存されたときにすでに失われています。そのために別の答えを使ってください。
完全にプログラムによる(または少なくともサーバー側の)ソリューションを探している人のために、私はcatdocのxls2csvツールを使用することで大成功を収めました。
Catdocをインストールしてください。
apt-get install catdoc
変換を行います。
xls2csv -d utf-8 file.xls > file-utf-8.csv
これは非常に速いです。
-d utf-8
フラグを含めることが重要です。そうしないと、デフォルトのcp1252
エンコーディングで出力がエンコードされ、情報を失う危険性があります。
xls2csv
は.xls
ファイルでのみ機能し、.xlsx
ファイルでは機能しません。
Powershellを使うことについてはどうですか。
Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8
最も簡単な方法: Open OfficeやGoogleドキュメントは必要ありません
csv
ファイルを開き、すべてのタブをコンマで置き換えます。 Win 10のメモ帳でこれを行うには、1つのタブフィールドを選択してからCtrl+H
をクリックします。表示されるウィンドウで、[置換後の文字列]フィールドにカンマ,
を入力し、[すべて置換]をクリックします。ファイルを保存してください。結果は、カンマ区切りのUTF-8 csvファイルになります。とにかくMS-Officeで開かないでください。これでタブ区切りのCSVファイルができました。または、ステップ番号5を適用した場合はカンマ区切りのもの。
おかしなことに、180MBのスプレッドシートをUTF8のCSVファイルに保存する最も簡単な方法は、セルをExcelに選択してコピーし、クリップボードの内容をSublimeTextに貼り付けることでした。
Excel 2016では、UTF-8形式専用のCSVエクスポートオプションがあります。
Xlsファイル(Excelファイル)をUnicodeテキストとして保存=>ファイルはテキスト形式(.txt)で保存されます
形式を.txtから.csvに変更します(ファイルの名前をXYX.txtからXYX.csvに変更します)。
私はMac Excel上でこの問題に対するVBAの解決策を見つけることができませんでした。 UTF-8テキストを出力する方法が全くないようです。
それで私はついにVBAをあきらめなければならなくて、弾丸を噛んで、そしてAppleScriptを学びました。思ったほど悪くはありませんでした。
解決策はここで説明されています: http://talesoftech.blogspot.com/2011/05/Excel-on-mac-goodbye-vba-hello.html
私も同じ問題に遭遇しましたが、これに対する簡単な解決策があります。
それは完全に動作し、任意のソフトウェアにインポートすることができますcsvファイルが生成されます。私は私のSQLITEデータベースにこのcsvファイルをインポートしました、そして、それはそのままですべてのUnicode文字で完全に動作します。
簡単な方法:Open Officeをダウンロードし( here )、スプレッドシートをロードしてExcelファイル(.xls
または.xlsx
)を開きます。それをテキストCSVファイルとして保存すると、現在のフォーマットを維持するか、.ODFフォーマットとして保存するかを尋ねるウィンドウが開きます。 「現在の形式を維持する」を選択し、新しいウィンドウで、ファイルが書かれている言語に応じて、自分に最適なオプションを選択します。スペイン語の場合は、西ヨーロッパ(Windows-1252/ WinLatin 1
)を選択してください。ファイルは正常に動作します。 Unicode(UTF-8
)を選択した場合、スペイン語の文字では機能しません。
Windows環境を想定して、Excelで通常どおりにファイルを保存して操作しますが、保存したExcelファイルをGnome Gnumeric(無料)で開きます。 Gnome GnumericのスプレッドシートをCSVとして保存します。これは私にとってはとにかくUTF-8 CSVとして保存します。
Excelは通常、csvファイルをutf8ではなくANSIエンコーディングとして保存します。
ファイルを修正する1つの方法は、メモ帳またはメモ帳++を使用することです。
ワークシートをUTF-8でエクスポートできる小さなPythonスクリプトを書きました。
最初のパラメータとしてExcelファイルを指定し、その後にエクスポートするシートを指定するだけです。シートを指定しないと、スクリプトはExcelファイルにあるすべてのワークシートをエクスポートします。
#!/usr/bin/env python
# export data sheets from xlsx to csv
from openpyxl import load_workbook
import csv
from os import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def get_all_sheets(Excel_file):
sheets = []
workbook = load_workbook(Excel_file,use_iterators=True,data_only=True)
all_worksheets = workbook.get_sheet_names()
for worksheet_name in all_worksheets:
sheets.append(worksheet_name)
return sheets
def csv_from_Excel(excel_file, sheets):
workbook = load_workbook(Excel_file,use_iterators=True,data_only=True)
for worksheet_name in sheets:
print("Export " + worksheet_name + " ...")
try:
worksheet = workbook.get_sheet_by_name(worksheet_name)
except KeyError:
print("Could not find " + worksheet_name)
sys.exit(1)
your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for row in worksheet.iter_rows():
lrow = []
for cell in row:
lrow.append(cell.value)
wr.writerow(lrow)
print(" ... done")
your_csv_file.close()
if not 2 <= len(sys.argv) <= 3:
print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
sys.exit(1)
else:
sheets = []
if len(sys.argv) == 3:
sheets = list(sys.argv[2].split(','))
else:
sheets = get_all_sheets(sys.argv[1])
assert(sheets != None and len(sheets) > 0)
csv_from_Excel(sys.argv[1], sheets)
エンコード - > Ansiに変換はANSI/UNICODEでエンコードします。 Utf8はUnicodeのサブセットです。おそらくANSIでは正しくエンコードされますが、ここではUTF8、@ SequenceDigitaleについて話しています。
Csv(カンマ区切り)としてエクスポートしてから、そのcsvをNotepad ++(無料)で開き、[エンコード]> [UTF8に変換]などのより速い方法があります。ただし、ファイルごとにこれを実行する必要がある場合に限ります。頻繁に変更してエクスポートする必要がある場合は、LibreOfficeまたはGDocsソリューションが最善です。
もう1つの解決策は、winwordでファイルを開き、txtとして保存してからExcelで再度開くと、ISAが動作することです。
Microsoft Excelには、Unicodeエンコードを使用してスプレッドシートをエクスポートするオプションがあります。次のスクリーンショットを参照してください。
保存ダイアログ>ツールボタン> Webオプション>エンコードタブ
"nevets1219"への2番目のオプションは、Notepad ++であなたのCSVファイルを開いて、ANSIに変換することです。
トップメニューから選択してください:エンコーディング - > Ansiに変換
同じ問題に遭遇し、この記事をグーグルしました。上記のどれも私のために働きませんでした。ついに私は自分のUnicodeの.xlsを.xmlに変換し([名前を付けて保存... XML Spreadsheet 2003]を選択)、正しい文字を生成しました。それから私はxmlを解析するためのコードを書き、私の使用のために内容を抽出しました。
メモ帳++で.csvを開いてください。あなたがあなたのエンコーディングが良いと思うなら(あなたは彼らがそうであるべきであるのですべての文字を見る)エンコーディングを押してください、そして次にANSIに変換してください - あなたの現在のエンコーディングが何であるか調べてください
私は同じ問題を抱えていて this アドインに出くわします、そしてそれはそれが言及されているExcel 2007と2010の横のExcel 2013で完全にうまく働きます。
私は自分のMac上でこのプロセスを自動化する必要がありました。私はもともとmpoweredが示唆しているようにcatdoc/xls2csv
を使ってみましたが、xls2csv
はドキュメントの元のエンコーディングを検出するのに苦労し、すべてのドキュメントが同じではなかったです。私がしたのは、デフォルトのWebページ出力エンコーディングをUTF-8
に設定してから、そのファイルをAppleのAutomatorに渡し、Convert Format of Excel Files
アクションを適用してWeb Page (HTML)
に変換することでした。それからPHP
、DOMDocument
、そしてXPath
を使って、私はドキュメントをクエリし、それらをCSV
にフォーマットしました。
これはPHPスクリプト(process.php)です。
<?php
$pi = pathinfo($argv[1]);
$file = $pi['dirname'] . '/' . $pi['filename'] . '.csv';
$fp = fopen($file,'w+');
$doc = new DOMDocument;
$doc->loadHTMLFile($argv[1]);
$xpath = new DOMXPath($doc);
$table = [];
foreach($xpath->query('//tr') as $row){
$_r = [];
foreach($xpath->query('td',$row) as $col){
$_r[] = trim($col->textContent);
}
fputcsv($fp,$_r);
}
fclose($fp);
?>
これは、HTMLドキュメントをcsvに変換するために使用したシェルコマンドです。
find . -name '*.htm' | xargs -I{} php ./process.php {}
これは本当にこれをやり直す方法ですが、私が見つけた最も信頼できる方法でした。