需要将winform窗体中Listview中的数据通过SaveFileDialog控件导出为Excel格式或着txt格式的文件
解决方案 »
- Webbrowser 执行jquery 为页面input赋值
- winfrom 怎么出图表!!!
- C# 新手求教一个菜鸟问题
- 开机自动启动,双击盘符时,运行!
- sendmessage 怎么发送中文,求助啦。
- 字符串 strcpy时由于内存问题引起的覆盖问题
- 窗体1 有一个 comobox1 窗体2上有个button1点击 Button1 使comobox1 连接上数据库 ACCESS;
- 我想知道..怎样才可以更好的理清编程过程中的思路???!!
- 對text字段進行匯總
- 怎样向运行的程序(如Word/写字板等)中写入文字?
- 【------------CSHARP和C++的区别?------------------------】
- 怎么获取有多少个控件?
public void ExportExcel(ListView lv)
{
if (lv.Items == null) return; string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = DateTime.Now.ToString("yyyy-MM-dd");
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0)
return;
//这里直接删除,因为saveDialog已经做了文件是否存在的判断
if (File.Exists(saveFileName)) File.Delete(saveFileName);
Excel.Application xlApp = new Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
return;
}
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(true);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
xlApp.Visible = false;
//填充列
for (int i = 0; i < lv.Columns.Count; i++)
{
worksheet.Cells[0, i + 1] = lv.Columns[i].Text.ToString();
((Excel.Range)worksheet.Cells[1, i + 1]).Font.Bold = true;
}
//填充数据(这里分了两种情况,1:lv带CheckedBox,2:不带CheckedBox) //带CheckedBoxes
if (lv.CheckBoxes == true)
{
int tmpCnt = 0;
for (int i = 0; i < lv.Items.Count; i++)
{
if (lv.Items[i].Checked == true)
{
for (int j = 0; j < lv.Columns.Count; j++)
{
if (j == 0)
{
worksheet.Cells[2 + tmpCnt, j + 1] = lv.Items[i].Text.ToString();
((Excel.Range)worksheet.Cells[2 + tmpCnt, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
}
else
{
worksheet.Cells[2 + tmpCnt, j + 1] = lv.Items[i].SubItems[j].Text.ToString();
((Excel.Range)worksheet.Cells[2 + tmpCnt, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
}
}
tmpCnt++;
}
}
}
else //不带Checkedboxe
{
for (int i = 0; i < lv.Items.Count; i++)
{
//for (int j = 0; j < lv.Columns.Count; j++)
//{
// if (j == 0)
// {
worksheet.Cells[1+i, 1] = lv.Items[i].Text.ToString();
((Excel.Range)worksheet.Cells[1+i, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
//}
//else
//{
// worksheet.Cells[2 + i, j + 1] = lv.Items[i].SubItems[j].Text.ToString();
// ((Excel.Range)worksheet.Cells[2 + i, j + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
//}
//}
}
}
object missing = System.Reflection.Missing.Value;
try
{
workbook.Saved = true;
workbook.SaveAs(saveFileName, Excel.XlFileFormat.xlXMLSpreadsheet, missing, missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
}
catch (Exception e1)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + e1.Message);
}
finally
{
xlApp.Quit();
System.GC.Collect();
}
}
读取方法:
/// <summary>
/// 读取CSV文件
/// </summary>
/// <returns></returns>
/// <author>yangy</author>
public static List<string> GetCSVData(string filePath)
{
List<string> list = new List<string>();
try
{
System.IO.StreamReader reader = new System.IO.StreamReader(filePath);
reader.Peek();
while (reader.Peek() > 0)
{
string str = reader.ReadLine();
string[] split = str.Split(',');
if (split.Length > 0)
{
list.Add(str);
}
}
}
catch (Exception exp)
{
WriteLogs.WriteError(exp, "Exception in Method xctc.ADAdvancedToolkit.ADHelpers.Utils.GetCSVData()。");
list = null;
}
return list;
}