【发布时间】:2014-12-11 21:54:19
【问题描述】:
我正在开发一个C# windows forms application,它使用Interop Open Library 15.0 将数据从DataGridView 导出到excel。我在 DataGridView 中的数据是这样的,它包含几列浮点型数据,四舍五入到小数点后三位。
例如,我的 DataGridView 中有一个数字 10.000,但是当我将它导出到 excel 时,它只导出 10 而不是 10.000。
我正在使用以下代码导出数据
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
// creating new WorkBook within Excel application
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
// creating new Excelsheet in workbook
Microsoft.Office.Interop.Excel._Worksheet indexWorkSheet = null;
indexWorkSheet = workbook.Sheets[1];
// changing the name of active sheet
indexWorkSheet.Name = "Index Summary";
indexWorkSheet.get_Range("A1").Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
indexWorkSheet.get_Range("A10", "A30").Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
string filelocation;
SaveFileDialog SaveFile = new SaveFileDialog();
if (SaveFile.ShowDialog() == DialogResult.OK)
{
filelocation = SaveFile.FileName;
for (int i = 1; i < dataGridViewIndex.Columns.Count + 1; i++)
{
indexWorkSheet.Cells[9, i + 3] = dataGridViewIndex.Columns[i - 1].HeaderCell.Value;
}
for (int i = 1; i < dataGridViewIndex.Rows.Count + 1; i++)
{
indexWorkSheet.Cells[i + 9, 3] = dataGridViewIndex.Rows[i - 1].HeaderCell.Value;
}
for (int i = 0; i < dataGridViewIndex.Rows.Count; i++)
{
for (int j = 0; j < dataGridViewIndex.Columns.Count; j++)
{
indexWorkSheet.Cells[i + 10, j + 4] = dataGridViewIndex.Rows[i].Cells[j].Value.ToString();
}
}
workbook.SaveAs(filelocation, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
我的 DataGridView 在下面的屏幕截图中
我想以 BBL/Day 和 Avg Price 的形式导出上述数据,无论值是多少,都保留三位小数。
有什么好办法解决这个问题吗?
【问题讨论】:
-
你试过 Open XML SDK 吗?如果您愿意,我可以使用 Open XML SDK 提供答案以实现此目标
-
我尝试了 XML,但在导出相同格式的数据时遇到了问题。它只是将所有内容作为文本不考虑它是什么类型。所以,我只是使用互操作
-
你误解了 .. 无论如何使用 Open XML SDK 生成 Exel 电子表格是可能的 - msdn.microsoft.com/en-us/library/office/… .. 读一读 :) ..
标签: c# excel datagridview