Страницы: 1
RSS
как сохранять файл .EXL в .CSV в кодировке UTF-8 ?
 
Исходный файл всегда в Excel. Программисту необходимо получать от меня файлы сохраненые в кодировке UTF-8 CSV.  
 
поиск по форуму результатов не дал(
 
{quote}{login=skydrom}{date=24.02.2010 02:13}{thema=как сохранять файл .EXL в  .CSV в кодировке UTF-8 ?}{post}Исходный файл всегда в Excel. Программисту необходимо получать от меня файлы сохраненые в кодировке UTF-8 CSV.  
 
поиск по форуму результатов не дал({/post}{/quote  
 
Гуру - подскажите что делать-то ?
 
{quote}{login=}{date=24.02.2010 11:01}{thema=Re: как сохранять файл .EXL в  .CSV в кодировке UTF-8 ?}{post}  
 
Гуру - подскажите что делать-то ?{/post}{/quote}В первую очередь ознакомиться с п. 4 отсюда: http://www.planetaexcel.ru/forum.php?thread_id=8735  
Потом можно было посмотреть справку и узнать, что эксель умеет сохранять в следующих форматах:  
xlCSV    
xlCSVMac      
xlCSVMSDOS    
xlCSVWindows    
или  
xlUnicodeText  
 
Отсюда вывод, что xlCSVUnicode - не существует и нужно идти обходными путями.  
Например:  
1. Сохранить как xlUnicodeText, а потом все знаки табуляции заменить на запятые (или точка с запятой - что там Ваш программист ждет в CSV)  
Подходит если нет в исходном документе знаков табуляции.  
2. Сохранить как xlCSV и сторонней программой перекодировать в Unicode
Bite my shiny metal ass!      
 
Еще можно отобрать гордое звание "программист" у того чувака, который может обрабатывать только UTF-8 CSV.  
Пусть или не ждет, или не называется так.  
:-)
Bite my shiny metal ass!      
 
Нашёл я тут ссылку на программу Killetsoft Convert 3.10. Может она поможет автору  
 
http://www.freewarefiles.com/screenshot.php?programid=53933  
 
P.S. Для скачивания нажмите Download Now.
 
хотя, наверное, эта программа автору не подойдёт
 
А хотя, если сперва в Excel'e сохранить файл в *.CSV, а затем этой программой пересохранить в *.CSV с кодировкой UTF-8, то подходит
 
окрыть экселевский файл ***.xls с помощью OpenOffice; выбрать сахранить как Текс csv; при сохранении появится диалоговое меню, где будет предложено выбрать кодировку и символы разделения поля и текста.
 
{quote}{login=Лузер™}{date=25.02.2010 08:46}{thema=}{post}Еще можно отобрать гордое звание "программист" у того чувака, который может обрабатывать только UTF-8 CSV.  
Пусть или не ждет, или не называется так.  
:-){/post}{/quote}  
Это да, согласен. Программист, мля...
Я сам - дурнее всякого примера! ...
 
Хоть и не неактуально, но не упомянули ещё вариант - генерить файл csv как текст макросом, на лету перекодируя строки в UTF-8. Код конвертера можно найти в сети, например (проверено):  
 
Помогите чайнику!  
Есть переменная типа стринг, в ней есть русские буквы, как сохранить её в файл(temp.txt), кодировка UTF-8 обязательна  
 
Option Explicit  
 
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (ByVal CodePage As Long, _  
   ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, _  
   ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long  
Private Declare Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, _  
   ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, _  
   ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, _  
   ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long  
 
Public Function EncodeUTF8(strSrc As String) As String  
   Dim nLen As Long  
   Dim strDst As String  
   Dim strRet As String  
   Dim nRet As Long  
   Dim p As Long  
     
   nLen = Len(strSrc)  
   strDst = String(nLen * 2, Chr(0))  
   strRet = String(nLen * 2, Chr(0))  
   p = StrPtr(strDst)  
   nRet = MultiByteToWideChar(1251, &H1, strSrc, nLen, p, nLen)  
   nRet = WideCharToMultiByte(65001, 0, p, nRet, StrPtr(strRet), nLen * 2, ByVal 0, 0)  
   EncodeUTF8 = Left$(StrConv(strRet, vbUnicode), nRet)  
End Function  
 
Sub WriteToFile()  
Dim MyFile1$  
Dim fso  As Object  
Dim Textfile  As Object  
Dim strUtf$  
 
MyFile1 = "c:\Trans.txt"  
Set fso = CreateObject("Scripting.FilesystemObject")  
Set Textfile = fso.OpenTextFile(MyFile1, 2, True)  
 
Textfile.WriteLine "encoding=""UTF-8"""  
strUtf = EncodeUTF8("Текст с кириллицей")  
Textfile.WriteLine strUtf  
Textfile.Close  
 
End Sub
Страницы: 1
Наверх