我可以使用java格式化要用CSV文件写入的数据

时间:2010-10-01 13:10:34

标签: java csv formatting

我有一些代码可以将数据写入CSV文件,但它会将数据写入CSV 没有正确格式化。我想大胆一些具体的文字。这可能吗?

4 个答案:

答案 0 :(得分:5)

CSV只是纯文本格式,因此您无法进行任何格式化。

如果您想要格式化,请考虑使用Excel库,例如Apache POIJasper Reports。 (当然,你最终得到一个excel文件而不是CSV,所以根据你的情况可能适合或不适合)

作为旁注,编写CSV有一些奇怪的细微差别(例如确保引号,逗号等被正确转义)。我使用了一个很好的轻量级库Open CSV,如果您选择使用普通的旧CSV,可能会让您的生活更轻松。

答案 1 :(得分:3)

CSV是纯文本文件格式,不能使用任何文字效果。

答案 2 :(得分:2)

我不知道,CSV是纯文本格式。 如果您正在创建一个csv,以便可以在Excel中打开它,那么我建议您查看MS Excel XML格式。

http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats#Excel_XML_Spreadsheet_example

一个例子如下(取自维基百科链接,这使得一些文字大胆)

   <?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook
   xmlns="urn:schemas-microsoft-com:office:spreadsheet"
   xmlns:o="urn:schemas-microsoft-com:office:office"
   xmlns:x="urn:schemas-microsoft-com:office:excel"
   xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
   xmlns:html="http://www.w3.org/TR/REC-html40">
  <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
    <Author>Darl McBride</Author>
    <LastAuthor>Bill Gates</LastAuthor>
    <Created>2007-03-15T23:04:04Z</Created>
    <Company>SCO Group, Inc.</Company>
    <Version>11.8036</Version>
  </DocumentProperties>
  <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
    <WindowHeight>6795</WindowHeight>
    <WindowWidth>8460</WindowWidth>
    <WindowTopX>120</WindowTopX>
    <WindowTopY>15</WindowTopY>
    <ProtectStructure>False</ProtectStructure>
    <ProtectWindows>False</ProtectWindows>
  </ExcelWorkbook>
  <Styles>
    <Style ss:ID="Default" ss:Name="Normal">
      <Alignment ss:Vertical="Bottom" />
      <Borders />
      <Font />
      <Interior />
      <NumberFormat />
      <Protection />
    </Style>
    <Style ss:ID="s21">
      <Font x:Family="Swiss" ss:Bold="1" />
    </Style>
  </Styles>
  <Worksheet ss:Name="Sheet1">
    <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="5"
       x:FullColumns="1" x:FullRows="1">
      <Row>
        <Cell>
          <Data ss:Type="String">Text in cell A1</Data>
        </Cell>
      </Row>
      <Row>
        <Cell ss:StyleID="s21">
          <Data ss:Type="String">Bold text in A2</Data>
        </Cell>
      </Row>
      <Row ss:Index="4">
        <Cell ss:Index="2">
          <Data ss:Type="Number">43</Data>
        </Cell>
      </Row>
      <Row>
        <Cell ss:Index="2" ss:Formula="=R[-1]C/2">
          <Data ss:Type="Number">21.5</Data>
        </Cell>
      </Row>
    </Table>
    <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
      <Print>
        <ValidPrinterInfo />
        <HorizontalResolution>600</HorizontalResolution>
        <VerticalResolution>600</VerticalResolution>
      </Print>
      <Selected />
      <Panes>
        <Pane>
          <Number>3</Number>
          <ActiveRow>5</ActiveRow>
          <ActiveCol>1</ActiveCol>
        </Pane>
      </Panes>
      <ProtectObjects>False</ProtectObjects>
      <ProtectScenarios>False</ProtectScenarios>
    </WorksheetOptions>
  </Worksheet>
</Workbook

答案 3 :(得分:0)

我简单的旧常规CSV没有。但是没有理由为什么在写出之前无法对数据进行编码...例如,粗体的HTML标记是&lt; b&gt;&lt; / b&gt;。这将向您发出确切信号,表明文本的哪些部分是粗体,并且来自众所周知的标准仍然是人类可读的。主要缺点是你必须在阅读后解析数据:(

要考虑的其他因素,因为您正在编写数据,为什么不将它写为RTF中的逗号分隔值或其他支持粗体等的格式?通常CSV是纯文本,但没有理由不能用其他方式写出来。请记住以相同的格式阅读它...