Очень нужна помощь в C# SaveAs Excel как CSV и раздел. ";"
От:
Аноним
Дата:
12.11.05 23:50
Оценка:
Добрых суток.
Помогите pliz сохранить файл Excel как CSV с разделителем ";" а не "," через API C#-а. Целый день бьюсь над это проблемой.
Если в Excel-е выбрать сохранить файл как CSV MSDOS (может и др. не знаю), то в CSV файле разделителями являются ";", а вот через C# ","
Уже и VB макрос записывал сохранения файла. Во время записи макроса создаётся файл такой, как мне надо, а потом, во время выполнения макроса, создаётся CSV, где разделители ",".
Нашёл в инете VB код (http://book.itzero.com/read/others/Apress.Definitive.Guide.to.Excel.VBA.Second.Edition.eBook-LiB_html/8218final/LiB0043.html найти Saving Data in Text Format), который обходит все ячейки и печатает в своём формате, но тут у меня возникла др. проблема: worksheet.Rows.Count имеет значение 65535, а при сохранении в файл значительно меньше (13).
Может кто знает как решить какую-нить из этих проблем.
Огромное спасибо.
Владимир.
Re: Очень нужна помощь в C# SaveAs Excel как CSV и раздел. "
Здравствуйте, v0l0d, Вы писали:
V>Здравствуйте, Аноним, Вы писали:
V>кажется нашёл решение через:
V>string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + V> "Data Source = C:\\base.xls;" + "Extended Properties=Excel 8.0;"; V>OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM[Лист1$]", strConn); V>OleDbConnection conn = new OleDbConnection(strConn); V>DataSet myDataSet = new DataSet(); V>myCommand.Fill(myDataSet);
Вот... блин...
Вроде бы всё было хорошо, но почему то таким спобосом теряются некоторые данные. Как я заметил те, что занимают несколько строк, но не все.
Может есть проще способ экспортировать данные в CSV файл с разделителем: ";"?
Спасибо!
Владимир.
Re: Очень нужна помощь в C# SaveAs Excel как CSV и раздел. "
Здравствуйте, Аноним, Вы писали:
А>Добрых суток. А>Помогите pliz сохранить файл Excel как CSV с разделителем ";" а не "," через API C#-а. Целый день бьюсь над это проблемой. А>Если в Excel-е выбрать сохранить файл как CSV MSDOS (может и др. не знаю), то в CSV файле разделителями являются ";", а вот через C# "," А>Уже и VB макрос записывал сохранения файла. Во время записи макроса создаётся файл такой, как мне надо, а потом, во время выполнения макроса, создаётся CSV, где разделители ",". А>Нашёл в инете VB код (http://book.itzero.com/read/others/Apress.Definitive.Guide.to.Excel.VBA.Second.Edition.eBook-LiB_html/8218final/LiB0043.html найти Saving Data in Text Format), который обходит все ячейки и печатает в своём формате, но тут у меня возникла др. проблема: worksheet.Rows.Count имеет значение 65535, а при сохранении в файл значительно меньше (13). А>Может кто знает как решить какую-нить из этих проблем. А>Огромное спасибо.
Из excel разделители управляются из Control Panel | Regional Options | Customize | List Separator. Из api — не смотрел, может так же (через культуру).
Re[2]: Очень нужна помощь в C# SaveAs Excel как CSV и раздел
От:
Аноним
Дата:
14.11.05 01:13
Оценка:
Проще — только перебором ячеек и выводом содержимого в нужном формате. Правда, может оказаться медленно.
Здравствуйте, Andrbig, Вы писали:
A>Из excel разделители управляются из Control Panel | Regional Options | Customize | List Separator. Из api — не смотрел, может так же (через культуру).
Надо будет попробовать. Спасибо.
Владимир.
Re[3]: Очень нужна помощь в C# SaveAs Excel как CSV и раздел
Здравствуйте, Dkm_S, Вы писали:
D_S>Проще — только перебором ячеек и выводом содержимого в нужном формате. Правда, может оказаться медленно.
D_S>данное сообщение получено с www.gotdotnet.ru D_S>ссылка на оригинальное сообщение
я пробовал перебором, но Columns.Count и Rows.Cound в worksheet-е выдавали не реально большие значения 65535 и что=то за 200.
Владимир.
Re[4]: Очень нужна помощь в C# SaveAs Excel как CSV и раздел
Здравствуйте, v0l0d, Вы писали:
V>Здравствуйте, Dkm_S, Вы писали:
D_S>>Проще — только перебором ячеек и выводом содержимого в нужном формате. Правда, может оказаться медленно.
D_S>>данное сообщение получено с www.gotdotnet.ru D_S>>ссылка на оригинальное сообщение V>я пробовал перебором, но Columns.Count и Rows.Cound в worksheet-е выдавали не реально большие значения 65535 и что=то за 200. V>
Понял как это побороть: worksheet.usedRange надо использовать
Но тормозить!!! ужас!
Владимир.
Re: Очень нужна помощь в C# SaveAs Excel как CSV и раздел. "
Здравствуйте, Аноним, Вы писали:
А>Добрых суток.
[skip] А>Уже и VB макрос записывал сохранения файла. Во время записи макроса создаётся файл такой, как мне надо, а потом, во время выполнения макроса, создаётся CSV, где разделители ",".
[skip] А>Огромное спасибо. А>Владимир.
Приведите текст макроса, который формирует Excel.
Re[2]: Очень нужна помощь в C# SaveAs Excel как CSV и раздел
Здравствуйте, v0l0d, Вы писали:
V>Понял как это побороть: worksheet.usedRange надо использовать V>Но тормозить!!! ужас!
Что-то никак не доберусь до красивого, ну или хотя бы работающего правильно на 100% варианта.
Используя этот метод (через UsedRange) появились грабли с датами. Они стали выдаваться как double ( :-E
И никак не могу найти: как правильно отформатировать дату...
За то нашёл более быстрый способ обхода ячеек
object[,] values = (object[,]) usedRange.Value2;
for (int i = 0; i < values.GetLength(0); i++) {
for (int j = 0; j < values.GetLength(1); j++) {
object o = values[i + 1, j + 1];
if (o != null) {
string value = o.ToString();
}
}
}
Скорость раз... в 10 больше
единственное надо делать проверку на размер usedRange (состоит из одной ячейки или вообще пустой)
Владимир.
Re[3]: Очень нужна помощь в C# SaveAs Excel как CSV и раздел